Sobes.tech
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.