Junior — Middle
Ce tipuri de excluderi mutuale (Mutex) sunt implementate în biblioteca standard Go?
sobes.tech AI
Răspuns de la AI
În biblioteca standard Go, este implementat un tip principal de excludere mutuală: sync.Mutex. Este un mutex simplu care asigură blocarea și deblocarea pentru a proteja secțiunile critice ale codului împotriva accesului simultan.
De asemenea, există sync.RWMutex — o versiune extinsă a mutex-ului, care permite mai multor cititori să mențină blocarea în același timp, dar scrierea este blocată exclusiv.
Exemplu de utilizare a sync.Mutex:
var mu sync.Mutex
var counter int
func increment() {
mu.Lock()
defer mu.Unlock()
counter++
}
Și un exemplu cu 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
}