Junior — Middle
Explique qué es un bloqueo de lectura-escritura (RWMutex) y cómo se utiliza para gestionar el acceso a los datos.
sobes.tech AI
Respuesta de la IA
El bloqueo de lectura-escritura (RWMutex) en Go es un mecanismo de sincronización que permite a varias goroutines leer datos simultáneamente, pero garantiza acceso exclusivo durante la escritura.
- RLock() / RUnlock() — bloqueo para lectura. Varias goroutines pueden mantener este bloqueo al mismo tiempo.
- Lock() / Unlock() — bloqueo para escritura. Solo una goroutine puede mantenerlo, y no se permiten lecturas durante ese tiempo.
Esto aumenta el rendimiento cuando hay muchas operaciones de lectura y pocas escrituras.
Ejemplo de uso:
var rwMutex sync.RWMutex
var data int
func readData() int {
rwMutex.RLock()
defer rwMutex.RUnlock()
return data
}
func writeData(val int) {
rwMutex.Lock()
defer rwMutex.Unlock()
data = val
}
En este ejemplo, varias goroutines pueden llamar a readData() simultáneamente, pero si se llama a writeData(), bloquea todas las lecturas y escrituras hasta que finalice.