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