Middle
¿Qué es un Mutex?
sobes.tech AI
Respuesta de la IA
Mutex (exclusión mutua) es un mecanismo de sincronización en Go, que se utiliza para evitar el acceso simultáneo de varias goroutines a recursos compartidos, como variables o estructuras de datos. Mutex garantiza que en cada momento solo una goroutine pueda poseer el bloqueo y ejecutar la sección crítica del código.
Ejemplo de uso de sync.Mutex en Go:
import (
"fmt"
"sync"
)
func main() {
var mu sync.Mutex
contador := 0
incrementar := func() {
mu.Lock() // adquirir el bloqueo
defer mu.Unlock() // liberar el bloqueo
contador++
}
var wg sync.WaitGroup
for i := 0; i < 1000; i++ {
wg.Add(1)
go func() {
defer wg.Done()
incrementar()
}()
}
wg.Wait()
fmt.Println("Contador:", contador)
}
Sin Mutex, el resultado podría ser incorrecto debido a condiciones de carrera.