Junior — Middle
Могу ли различите нитке истовремено да комуницирају са истом адресом меморије?
sobes.tech АИ
Одговор од АИ
Da, u Go-u različite gorutine (nitovi) mogu istovremeno pristupati istoj adresi memorije. Međutim, to može dovesti do uslova trke (race conditions) ako pristup nije sinhronizovan. Za sigurnu interakciju sa deljenom memorijom koriste se mehanizmi sinhronizacije, kao što su mutexi (sync.Mutex), kanali (chan) ili atomarne operacije iz paketa sync/atomic.
Primer korišćenja mutexa za zaštitu pristupa zajedničkoj promenljivoj:
var mu sync.Mutex
var counter int
func increment() {
mu.Lock()
counter++
mu.Unlock()
}
Bez ovih mera, istovremeni pristup može dovesti do nepredvidivog ponašanja programa.