Sobes.tech
Junior — Middle

¿Cuál es la finalidad del tipo de sincronización RWMutex en el lenguaje de programación?

sobes.tech AI

Respuesta de la IA

En el lenguaje Go, el tipo RWMutex (Mutex de lectura-escritura) se utiliza para sincronizar el acceso a recursos compartidos, permitiendo que varias goroutines lean datos simultáneamente, pero bloqueando la escritura mientras hay lectura en curso, y viceversa.

El propósito principal de RWMutex es mejorar el rendimiento en escenarios donde las operaciones de lectura son mucho más frecuentes que las de escritura. Proporciona dos tipos de bloqueos:

  • RLock() — bloqueo para lectura, permite que varios lectores accedan simultáneamente.
  • Lock() — bloqueo para escritura, acceso exclusivo.

Ejemplo de uso:

var mu sync.RWMutex
var data int

func readData() int {
    mu.RLock()
    defer mu.RUnlock()
    return data
}

func writeData(val int) {
    mu.Lock()
    defer mu.Unlock()
    data = val
}

De esta manera, RWMutex ayuda a gestionar de manera eficiente el acceso concurrente, minimizando bloqueos en escenarios con lecturas frecuentes.