Junior — Middle
Kas erinevad niidid saavad samaaegselt suhelda sama mälu aadressiga?
sobes.tech AI
Vastus AI-lt
Jah, Go-s võivad erinevad gorutined (niidid) samaaegselt pääseda samaaegselt sama mälu aadressile. Kuid see võib viia võistlusolukordadeni (race conditions), kui juurdepääs ei ole sünkroniseeritud. Turvalise suhtluse jaoks jagatud mäluga kasutatakse sünkroniseerimismehhanisme, nagu mutexid (sync.Mutex), kanalid (chan) või sync/atomic paketi atomaarseid operatsioone.
Näide mutexi kasutamisest jagatud muutuja kaitsmiseks:
var mu sync.Mutex
var counter int
func increment() {
mu.Lock()
counter++
mu.Unlock()
}
Ilma nende meetmeteta võib samaaegne juurdepääs põhjustada programmi ettearvamatut käitumist.