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.