Sobes.tech
Junior — Middle

Spiega cos'è un blocco (Lock) nel contesto di un mutex e a cosa serve.

sobes.tech AI

Risposta dell'AI

Il blocco (Lock) è un meccanismo di sincronizzazione utilizzato per prevenire l'accesso simultaneo di più thread o goroutine a una risorsa condivisa, al fine di evitare condizioni di gara e garantire la correttezza dei dati.

Nel contesto di un mutex, il blocco significa che quando un thread acquisisce (lock) un mutex, gli altri thread che tentano di acquisirlo aspetteranno che il primo lo rilasci (unlock).

Esempio in Go:

var mu sync.Mutex
var counter int

func increment() {
    mu.Lock()         // acquisisci il lock
    counter++         // sezione critica
    mu.Unlock()       // rilascia il lock
}

In questo modo, il lock garantisce che solo un thread esegua la sezione critica del codice in un dato momento.