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.