Junior — Middle
Aké typy vzájomného vylúčenia (Mutex) sú implementované v štandardnej knižnici Go?
sobes.tech AI
Odpoveď od AI
V štandardnej knižnici Go je implementovaný hlavný typ vzájomného vylúčenia: sync.Mutex. Je to jednoduchý mutex, ktorý zabezpečuje zámok a odomknutie na ochranu kritických sekcií kódu pred súčasným prístupom.
Okrem toho existuje sync.RWMutex — rozšírená verzia mutexu, ktorá umožňuje viacerým čitateľom držať zámok súčasne, ale zápis je blokovaný výlučne.
Príklad použitia sync.Mutex:
var mu sync.Mutex
var counter int
func increment() {
mu.Lock()
defer mu.Unlock()
counter++
}
A prí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
}