Junior — Middle
¿En qué se diferencia el uso de un mutex estándar de un mutex con capacidad de lectura y escritura (RWMutex)?
sobes.tech AI
Respuesta de la IA
El mutex estándar (sync.Mutex) en Go proporciona acceso exclusivo a un recurso: en cada momento solo una gorutina puede adquirir el mutex, las demás esperan.
El mutex con capacidad de lectura y escritura (sync.RWMutex) permite:
- Varias gorutinas pueden adquirir simultáneamente el mutex para lectura (RLock), si no hay un escritor.
- Solo una gorutina puede adquirir el mutex para escritura (Lock), bloqueando a todos los lectores y otros escritores.
Esto aumenta el rendimiento en escenarios donde las operaciones de lectura son mucho más frecuentes que las de escritura, ya que las lecturas no bloquean entre sí.
Ejemplo:
var mu sync.RWMutex
var data int
// Lectura
mu.RLock()
fmt.Println(data)
mu.RUnlock()
// Escritura
mu.Lock()
data = 42
mu.Unlock()
Si se usa un Mutex normal, incluso las lecturas bloquearían entre sí, lo que reduce el paralelismo.