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
}