Sobes.tech
Junior — Middle

Explica ce este blocarea Read-Write (RWMutex) și cum este utilizată pentru gestionarea accesului la date.

sobes.tech AI

Răspuns de la AI

Blocarea de citire-scriere (RWMutex) în Go este un mecanism de sincronizare care permite mai multor goroutines să citească datele simultan, garantând în același timp acces exclusiv în timpul scrierii.

  • RLock() / RUnlock() — blocare pentru citire. Mai multe goroutines pot menține această blocare în același timp.
  • Lock() / Unlock() — blocare pentru scriere. Doar o goroutine o poate menține, și în timpul acesteia nu sunt permise citiri.

Aceasta crește performanța atunci când există multe operațiuni de citire și puține de scriere.

Exemplu de utilizare:

var rwMutex sync.RWMutex
var data int

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

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

În acest exemplu, mai multe goroutines pot apela readData() simultan, dar dacă se apelează writeData(), aceasta blochează toate citirile și scrierile până la finalizare.