Sobes.tech
Junior — Middle

¿Qué tipos de exclusiones mutuas (Mutex) están implementados en la biblioteca estándar de Go?

sobes.tech AI

Respuesta de la IA

En la biblioteca estándar de Go, se implementa un tipo principal de exclusión mutua: sync.Mutex. Es un mutex simple que proporciona bloqueo y desbloqueo para proteger las secciones críticas del código contra accesos simultáneos.

Además, existe sync.RWMutex, una versión extendida del mutex que permite a varios lectores mantener el bloqueo simultáneamente, pero la escritura se bloquea de forma exclusiva.

Ejemplo de uso de sync.Mutex:

var mu sync.Mutex
var counter int

func increment() {
    mu.Lock()
    defer mu.Unlock()
    counter++
}

Y un ejemplo con sync.RWMutex:

var rwMu sync.RWMutex
var data int

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

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