Junior — Middle
Puoi spiegare cos'è un mutex (mutua esclusione) e come funziona?
sobes.tech AI
Risposta dell'AI
L'esclusione mutua (Mutex) è un meccanismo di sincronizzazione che garantisce che in un dato momento solo una goroutine (thread) possa accedere a una risorsa o a una sezione critica del codice.
In Go, si utilizza il tipo sync.Mutex per questo. Quando una goroutine chiama Lock(), blocca il mutex, e altre goroutine che tentano di chiamare Lock() aspetteranno che il mutex venga sbloccato tramite Unlock().
Esempio:
var mu sync.Mutex
var counter int
func increment() {
mu.Lock()
defer mu.Unlock()
counter++
}
In questo esempio, increment aumenta in modo sicuro il valore di counter, prevenendo accessi simultanei da parte di più goroutine.