Sobes.tech
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.