Sobes.tech
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.