Junior — Middle
Kādi savstarpējās izslēgšanas (Mutex) veidi ir īstenoti Go standarta bibliotēkā?
sobes.tech AI
Atbilde no AI
Standarta bibliotēkā Go ir īstenots galvenais savstarpējās izslēgšanas tips: sync.Mutex. Tas ir vienkāršs mutex, kas nodrošina bloķēšanu un atbloķēšanu, lai aizsargātu kritiskās koda sekcijas no vienlaicīgas piekļuves.
Turklāt ir sync.RWMutex — paplašināta mutex versija, kas ļauj vairākiem lasītājiem vienlaicīgi turēt bloķējumu, bet rakstīšana tiek bloķēta ekskluzīvi.
sync.Mutex piemērs:
var mu sync.Mutex
var counter int
func increment() {
mu.Lock()
defer mu.Unlock()
counter++
}
Un piemērs ar 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
}