Junior — Middle
Ce tehnici de utilizare a blocărilor sau alte mecanisme pentru prevenirea accesului simultan la date cunoști?
sobes.tech AI
Răspuns de la AI
Tehnicile principale pentru prevenirea accesului concurent la date în Go:
- Mutex (sync.Mutex): blocarea secțiunii critice pentru ca doar un singur fir de execuție să poată lucra cu datele.
var mu sync.Mutex
mu.Lock()
// lucru cu date comune
mu.Unlock()
-
RWMutex (sync.RWMutex): permite mai multor cititori să citească datele simultan, dar blochează scrierea.
-
Canale (channels): transmiterea datelor între goroutine-uri, evitând accesul direct la datele comune.
-
Operații atomice (sync/atomic): pentru operații simple cu variabile fără blocare completă.
-
sync.Once: pentru inițializarea unică a datelor.
Alegerea mecanismului depinde de sarcină: pentru excludere mutuală simplă — Mutex, pentru separarea citirii și scrierii — RWMutex, pentru transmiterea mesajelor — canale.