Junior — Middle
Jaké typy vzájemných vyloučení (Mutex) jsou implementovány v standardní knihovně Go?
sobes.tech AI
Odpověď od AI
V knihovně standardního Go je implementován hlavní typ vzájemného vyloučení: sync.Mutex. Jedná se o jednoduchý mutex, který zajišťuje zámek a odemknutí pro ochranu kritických sekcí kódu před současným přístupem.
Kromě toho existuje sync.RWMutex — rozšířená verze mutexu, která umožňuje více čtenářům současně držet zámek, ale zápis je blokován výhradně.
Příklad použití sync.Mutex:
var mu sync.Mutex
var counter int
func increment() {
mu.Lock()
defer mu.Unlock()
counter++
}
A příklad s 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
}