Junior — Middle
Milyen típusú kölcsönös kizárások (Mutex) vannak implementálva a Go standard könyvtárában?
sobes.tech MI
Válasz az MI-től
A Go szabványos könyvtárában egy fő kölcsönös kizárási típust valósítottak meg: sync.Mutex. Ez egy egyszerű mutex, amely zárolást és feloldást biztosít a kritikus szekciók védelmére a párhuzamos hozzáférés ellen.
Ezenkívül létezik a sync.RWMutex — a mutex kiterjesztett változata, amely lehetővé teszi több olvasónak, hogy egyszerre tartsa a zárolást, de az írás kizárólagosan blokkolva van.
A sync.Mutex használatának példája:
var mu sync.Mutex
var counter int
func increment() {
mu.Lock()
defer mu.Unlock()
counter++
}
És egy példa a sync.RWMutex-szel:
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
}