Sobes.tech
Junior — Middle

Explique qué es un bloqueo de lectura-escritura (RWMutex) y cómo se utiliza para gestionar el acceso a los datos.

sobes.tech AI

Respuesta de la IA

El bloqueo de lectura-escritura (RWMutex) en Go es un mecanismo de sincronización que permite a varias goroutines leer datos simultáneamente, pero garantiza acceso exclusivo durante la escritura.

  • RLock() / RUnlock() — bloqueo para lectura. Varias goroutines pueden mantener este bloqueo al mismo tiempo.
  • Lock() / Unlock() — bloqueo para escritura. Solo una goroutine puede mantenerlo, y no se permiten lecturas durante ese tiempo.

Esto aumenta el rendimiento cuando hay muchas operaciones de lectura y pocas escrituras.

Ejemplo de uso:

var rwMutex sync.RWMutex
var data int

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

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

En este ejemplo, varias goroutines pueden llamar a readData() simultáneamente, pero si se llama a writeData(), bloquea todas las lecturas y escrituras hasta que finalice.