Junior — Middle
Vysvetlite, čo je Read-Write zámok (RWMutex) a ako sa používajú na riadenie prístupu k údajom.
sobes.tech AI
Odpoveď od AI
Blokovanie čítania-písania (RWMutex) v Go je mechanizmus synchronizácie, ktorý umožňuje viacerým gorutinám súčasne čítať údaje, pričom zabezpečuje exkluzívny prístup počas zápisu.
- RLock() / RUnlock() — zámok pre čítanie. Viacero gorutín môže tento zámok držať súčasne.
- Lock() / Unlock() — zámok pre zápis. Len jedna gorutina ho môže držať, a počas toho nie sú povolené žiadne čítania.
Toto zvyšuje výkon, keď je veľa čitateľských operácií a zriedka sa zapisuje.
Príklad použitia:
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 príklade môžu viaceré gorutiny volať readData() súčasne, ale ak sa volá writeData(), blokuje všetky čítania a zápisy do jej dokončenia.