Junior — Middle
Quali tipi di meccanismi di blocco mutuo esclusione utilizzi nei tuoi progetti?
sobes.tech AI
Risposta dell'AI
In Go, per implementare l’esclusione mutua, utilizzo più comunemente il tipo standard sync.Mutex. È semplice da usare e blocca efficacemente le sezioni critiche del codice.
Utilizzo anche sync.RWMutex quando devo distinguere tra accesso in lettura e scrittura: più goroutine possono leggere contemporaneamente, ma la scrittura blocca tutti.
In alcuni casi, utilizzo canali (channels) per la sincronizzazione, il che permette di evitare blocchi espliciti e rendere il codice più dichiarativo.
Esempio con sync.Mutex:
var mu sync.Mutex
var counter int
func increment() {
mu.Lock()
defer mu.Unlock()
counter++
}
Quindi, la scelta del meccanismo dipende dal compito specifico e dai requisiti di prestazioni.