Junior — Middle
Koje tehnike korišćenja blokada ili drugih mehanizama za sprečavanje istovremenog pristupa podacima poznaješ?
sobes.tech АИ
Одговор од АИ
Glavne tehnike za sprečavanje istovremenog pristupa podacima u Go:
- Mutex (sync.Mutex): blokira kritičnu sekciju tako da samo jedan tok može raditi sa podacima.
var mu sync.Mutex
mu.Lock()
// rad sa zajedničkim podacima
mu.Unlock()
-
RWMutex (sync.RWMutex): omogućava više čitaoca da istovremeno čitaju podatke, ali blokira pisanje.
-
Kanali (channels): prenos podataka između gorutina, čime se izbegava direktan pristup zajedničkim podacima.
-
Atomic operacije (sync/atomic): za jednostavne operacije sa promenljivima bez potpune blokade.
-
sync.Once: za jednokratnu inicijalizaciju podataka.
Izbor mehanizma zavisi od zadatka: za jednostavno uzajamno isključivanje — Mutex, za razdvajanje čitanja i pisanja — RWMutex, za prenos poruka — kanali.