Junior — Middle
Vysvětlete, co je Read-Write zámek (RWMutex) a jak se používá k řízení přístupu k datům.
sobes.tech AI
Odpověď od AI
Zámek čtení-zápisů (RWMutex) v Go je mechanismus synchronizace, který umožňuje více gorutinám současně číst data, zatímco zajišťuje exkluzivní přístup při zápisu.
- RLock() / RUnlock() — zámek pro čtení. Více gorutin může tento zámek držet současně.
- Lock() / Unlock() — zámek pro zápis. Pouze jedna gorutina jej může držet, a během této doby nejsou povoleny žádné čtení.
Toto zvyšuje výkon, když je mnoho čtecích operací a zápisy jsou vzácné.
Příklad použití:
var rwMutex sync.RWMutex
var data int
func readData() int {
rwMutex.RLock()
defer rwMutex.RUnlock()
return data
}
func writeData(val int) {
rwMutex.Lock()
defer rwMutex.Unlock()
data = val
}
V tomto příkladu může více gorutin volat readData() současně, ale pokud je volána writeData(), blokuje všechny čtení a zápisy do jejího dokončení.