Sobes.tech
Junior — Middle

Kedy je vhodné použiť mechanizmus RWMutex v programovaní na správu zdieľaného prístupu k zdrojom?

sobes.tech AI

Odpoveď od AI

Mechanizmus RWMutex v Go sa odporúča použiť, keď máte zdroj, ku ktorému môžu súčasne pristupovať viacerí čitatelia, ale zápis musí byť exkluzívny. RWMutex umožňuje viacerým gorutinám čítať dáta súčasne bez vzájomného blokovania, ale pri zápise blokuje prístup pre všetkých.

Toto zvyšuje výkon v scenároch s častými operáciami čítania a zriedkavými operáciami zápisu.

Príklad použitia:

var mu sync.RWMutex
var data int

func readData() int {
    mu.RLock()         // zámok pre čítanie
    defer mu.RUnlock()
    return data
}

func writeData(val int) {
    mu.Lock()          // exkluzívny zámok pre zápis
    defer mu.Unlock()
    data = val
}

Používajte RWMutex, keď:

  • Čítanie je časté a paralelné.
  • Zápis je zriedkavý a vyžaduje exkluzívny prístup.

Ak operácie čítania a zápisu sú približne rovnaké v frekvencii, alebo ak je dôležitá jednoduchosť, je lepšie použiť obyčajný Mutex.