Junior — Middle
Quali tipi di mutua esclusione (Mutex) sono implementati nella libreria standard di Go?
sobes.tech AI
Risposta dell'AI
Nella libreria standard di Go, viene implementato un tipo principale di mutua esclusione: sync.Mutex. È un mutex semplice che garantisce blocco e sblocco per proteggere le sezioni critiche del codice da accessi simultanei.
Inoltre, esiste sync.RWMutex, una versione estesa del mutex che permette a più lettori di mantenere il blocco contemporaneamente, ma la scrittura viene bloccata in modo esclusivo.
Esempio di utilizzo di sync.Mutex:
var mu sync.Mutex
var counter int
func increment() {
mu.Lock()
defer mu.Unlock()
counter++
}
E un esempio con sync.RWMutex:
var rwMu sync.RWMutex
var data int
func readData() int {
rwMu.RLock()
defer rwMu.RUnlock()
return data
}
func writeData(val int) {
rwMu.Lock()
defer rwMu.Unlock()
data = val
}