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