Sobes.tech
Junior — Middle

Care este scopul tipului de sincronizare RWMutex în limbajul de programare?

sobes.tech AI

Răspuns de la AI

În limbajul Go, tipul RWMutex (Mutex de citire-scriere) este utilizat pentru a sincroniza accesul la resursele comune, permițând mai multor goroutines să citească datele simultan, dar blocând scrierea în timpul citirii și invers.

Scopul principal al RWMutex este de a îmbunătăți performanța în scenarii în care operațiile de citire sunt mult mai frecvente decât cele de scriere. Oferă două tipuri de blocări:

  • RLock() — blocare pentru citire, permite mai multor cititori să acceseze simultan.
  • Lock() — blocare pentru scriere, acces exclusiv.

Exemplu de utilizare:

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
}

Astfel, RWMutex ajută la gestionarea eficientă a accesului concurent, minimizând blocajele în cazul citirilor frecvente.