Junior — Middle
Potresti spiegare il principio di funzionamento del mutex e il suo utilizzo nei programmi multithread?
sobes.tech AI
Risposta dell'AI
L’esclusione mutua (Mutex) è un meccanismo di sincronizzazione utilizzato per prevenire l’accesso simultaneo di più thread a una risorsa condivisa (ad esempio, una variabile o un file). Il Mutex garantisce che in ogni momento solo un thread possa possedere il blocco e eseguire la sezione critica del codice.
Principio di funzionamento:
- Il thread tenta di acquisire il mutex prima di entrare nella sezione critica.
- Se il mutex è libero, il thread ottiene l’accesso e continua.
- Se il mutex è occupato da un altro thread, il thread corrente si blocca e aspetta che venga rilasciato.
- Dopo aver terminato con la risorsa, il thread rilascia il mutex, permettendo ad altri thread di continuare.
In Go, questo viene implementato tramite il tipo sync.Mutex:
var mu sync.Mutex
var counter int
func increment() {
mu.Lock() // acquisizione del mutex
counter++ // sezione critica
mu.Unlock() // rilascio del mutex
}
L’uso del mutex previene le condizioni di race e garantisce l’integrità dei dati durante l’esecuzione parallela.