Sobes.tech
Junior — Middle

Jaký je účel typu synchronizace RWMutex v programovacím jazyce?

sobes.tech AI

Odpověď od AI

V jazyce Go se typ RWMutex (Read-Write Mutex) používá k synchronizaci přístupu ke sdíleným zdrojům, což umožňuje více gorutinám současně číst data, ale blokuje zápis, dokud je čtení aktivní, a naopak.

Hlavním cílem RWMutex je zvýšit výkon v scénářích, kde jsou operace čtení mnohem častější než zápisy. Poskytuje dva typy zámků:

  • RLock() — zámek pro čtení, umožňuje více čtenářům současně přístup.
  • Lock() — zámek pro zápis, exkluzivní přístup.

Příklad použití:

var mu sync.RWMutex
var data int

func readData() int {
    mu.RLock()
    defer mu.RUnlock()
    return data
}

func writeData(val int) {
    mu.Lock()
    defer mu.Unlock()
    data = val
}

Tímto způsobem RWMutex pomáhá efektivně řídit konkurenční přístup a minimalizovat blokování při častém čtení.