Sobes.tech
Junior — Middle

Quelle est la différence entre l'utilisation d'un mutex standard et d'un mutex avec capacité de lecture et d'écriture (RWMutex) ?

sobes.tech IA

Réponse de l'IA

Le mutex standard (sync.Mutex) en Go assure un accès exclusif a una recurso : en cada momento, solo una goroutine puede adquirir el mutex, las demás esperan.

El mutex con capacidad de lectura y escritura (sync.RWMutex) permite:

  • Varias goroutines pueden adquirir simultáneamente el mutex para lectura (RLock), si no hay un escritor.
  • Solo una goroutine puede adquirir el mutex para escritura (Lock), bloqueando a todos los lectores y otros escritores.

Esto mejora 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.