Senior
¿Qué son Mutex y RWMutex? ¿En qué se diferencian?
sobes.tech AI
Respuesta de la IA
Mutex (en Go — sync.Mutex) es un primitive de sincronización que garantiza acceso exclusivo a un recurso. Cuando una gorutina adquiere el Mutex, otras gorutinas que intenten adquirirlo se bloquean hasta que se libere.
RWMutex (sync.RWMutex) es una extensión del Mutex que permite dividir el acceso en lectura y escritura. Permite que varias gorutinas lean datos simultáneamente (RLock), pero la escritura (Lock) requiere acceso exclusivo y bloquea a todos los lectores y escritores.
Diferencias:
- Mutex bloquea a todos los que intentan acceder mientras está tomado.
- RWMutex permite que múltiples lectores trabajen en paralelo, pero la escritura bloquea a todos.
Ejemplo:
var mu sync.RWMutex
var data int
// Lectura
mu.RLock()
fmt.Println(data)
mu.RUnlock()
// Escritura
mu.Lock()
data = 42
mu.Unlock()