Junior — Middle
Millised vastastikused välistamised (Mutex) on Go standardraamatukogus implementeerinud?
sobes.tech AI
Vastus AI-lt
Standardsed raamatukogus Go on rakendatud peamine vastastikuse välistamise tüüp: sync.Mutex. See on lihtne mutex, mis tagab lukustamise ja vabastamise, et kaitsta kriitilisi koodiosi samaaegse juurdepääsu eest.
Lisaks on olemas sync.RWMutex — laiendatud mutexi versioon, mis võimaldab mitmel lugejal samaaegselt lukku hoida, kuid kirjutamine on eksklusiivselt blokeeritud.
sync.Mutex kasutamise näide:
var mu sync.Mutex
var counter int
func increment() {
mu.Lock()
defer mu.Unlock()
counter++
}
Ja näide sync.RWMutex-ga:
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
}