Junior — Middle
Koje vrste međusobnih isključivanja (Mutex) su implementirane u standardnoj biblioteci Go?
sobes.tech АИ
Одговор од АИ
U standardnoj biblioteci Go implementiran je glavni tip međusobnog isključivanja: sync.Mutex. To je jednostavan mutex koji obezbeđuje zaključavanje i otključavanje za zaštitu kritičnih sekcija koda od istovremenog pristupa.
Pored toga, postoji sync.RWMutex — proširena verzija mutexa koja omogućava više čitalaca da istovremeno drže zaključavanje, ali zapis je blokiran isključivo.
Primer korišćenja sync.Mutex:
var mu sync.Mutex
var counter int
func increment() {
mu.Lock()
defer mu.Unlock()
counter++
}
I primer sa 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
}