Junior — Middle
Mohou různé vlákna současně komunikovat se stejnou adresou paměti?
sobes.tech AI
Odpověď od AI
Ano, v Go mohou různé gorutiny (vlákna) současně přistupovat ke stejné adrese paměti. To však může vést ke stavu závodu (race condition), pokud není přístup synchronizován. Pro bezpečné interakce se sdílenou pamětí se používají mechanismy synchronizace, jako jsou mutexy (sync.Mutex), kanály (chan) nebo atomické operace z balíčku sync/atomic.
Příklad použití mutexu k ochraně přístupu ke sdílené proměnné:
var mu sync.Mutex
var counter int
func increment() {
mu.Lock()
counter++
mu.Unlock()
}
Bez těchto opatření může současný přístup vést k nepředvídatelnému chování programu.