Junior — Middle
Come viene implementato il meccanismo di mutua esclusione usando Mutex nel linguaggio Go?
sobes.tech AI
Risposta dell'AI
Nel linguaggio Go, per implementare l'esclusione mutua (mutex) si utilizza il tipo sync.Mutex. Questo permette di proteggere le sezioni critiche del codice da accessi simultanei da parte di più goroutine, prevenendo condizioni di gara.
Operazioni principali:
Lock()— blocca il mutex, impedendo ad altre goroutine di accedere.Unlock()— sblocca il mutex, permettendo ad altre goroutine di continuare.
Esempio di utilizzo:
package main
import (
"fmt"
"sync"
)
func main() {
var mu sync.Mutex
counter := 0
mu.Lock() // Blocca il mutex
counter++
fmt.Println("Contatore:", counter)
mu.Unlock() // Sblocca il mutex
}
In ambienti multithread, il mutex garantisce che solo una goroutine esegua il codice tra Lock() e Unlock() alla volta, prevenendo modifiche errate ai dati condivisi.