Junior — Middle
Welke soorten onderlinge uitsluitingen (Mutex) zijn geïmplementeerd in de standaardbibliotheek van Go?
sobes.tech AI
Antwoord van AI
In de standaardbibliotheek van Go is een hoofdtype van onderlinge uitsluiting geïmplementeerd: sync.Mutex. Het is een eenvoudige mutex die vergrendeling en ontgrendeling biedt om kritieke secties van de code te beschermen tegen gelijktijdige toegang.
Daarnaast is er sync.RWMutex — een uitgebreide versie van de mutex die meerdere lezers gelijktijdig een vergrendeling laat behouden, maar schrijven wordt exclusief geblokkeerd.
Voorbeeld van het gebruik van sync.Mutex:
var mu sync.Mutex
var counter int
func increment() {
mu.Lock()
defer mu.Unlock()
counter++
}
En een voorbeeld met 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
}