Junior — Middle
V čem spočívá rozdíl mezi použitím standardového mutexu a mutexu s možností čtení a zápisu (RWMutex)?
sobes.tech AI
Odpověď od AI
Standardový mutex (sync.Mutex) v Go zajišťuje exkluzivní přístup k prostředku: v každém okamžiku může mutex získat pouze jedna gorutina, ostatní čekají.
Mutex s možností čtení a zápisu (sync.RWMutex) umožňuje:
- Několik gorutin může současně získat mutex pro čtení (RLock), pokud není žádný zapisovatel.
- Pouze jedna gorutina může získat mutex pro zápis (Lock), čímž blokuje všechny čtenáře i ostatní zapisovatele.
To zvyšuje výkon v scénářích, kde jsou operace čtení mnohem častější než zápisy, protože čtení se navzájem neblokují.
Příklad:
var mu sync.RWMutex
var data int
// Čtení
mu.RLock()
fmt.Println(data)
mu.RUnlock()
// Zápis
mu.Lock()
data = 42
mu.Unlock()
Pokud použijete běžný Mutex, i čtení se budou blokovat navzájem, což snižuje paralelismus.