Junior — Middle
Môžu rôzne vlákna súčasne komunikovať s rovnakou adresou pamäte?
sobes.tech AI
Odpoveď od AI
Áno, v Go môžu rôzne gorutiny (vlákna) súčasne pristupovať k rovnakej adrese pamäte. To však môže viesť k podmienkam pretečenia (race conditions), ak prístup nie je synchronizovaný. Na bezpečnú interakciu so zdieľanou pamäťou sa používajú mechanizmy synchronizácie, ako sú mutexy (sync.Mutex), kanály (chan) alebo atomické operácie z balíka sync/atomic.
Príklad použitia mutexu na ochranu prístupu ku spoločnej premennej:
var mu sync.Mutex
var counter int
func increment() {
mu.Lock()
counter++
mu.Unlock()
}
Bez týchto opatrení môže súčasný prístup viesť k nepredvídateľnému správaniu programu.