Sobes.tech
Junior — Middle

Aký je účel typu synchronizácie RWMutex v programovacom jazyku?

sobes.tech AI

Odpoveď od AI

V jazyku Go sa typ RWMutex (Read-Write Mutex) slúži na synchronizáciu prístupu ku spoločným zdrojom, umožňujúc viacerým gorutinám súčasne čítať dáta, ale blokuje zápis, kým je čítanie aktívne, a naopak.

Hlavným cieľom RWMutex je zvýšiť výkon v scenároch, kde sú operácie čítania oveľa častejšie ako zápisy. Poskytuje dva typy zámkov:

  • RLock() — zámok pre čítanie, umožňuje viacerým čitateľom súčasný prístup.
  • Lock() — zámok pre zápis, exkluzívny prístup.

Príklad použitia:

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 spôsobom RWMutex pomáha efektívne riadiť konkurenčný prístup a minimalizovať blokovania pri častom čítaní.