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