Junior — Middle
Czy różne wątki mogą jednocześnie współdziałać z tym samym adresem pamięci?
sobes.tech AI
Odpowiedź od AI
Tak, w Go różne gorutyny (wątki) mogą jednocześnie odwoływać się do tego samego adresu pamięci. Jednakże może to prowadzić do warunków wyścigu, jeśli dostęp nie jest synchronizowany. Do bezpiecznej interakcji z pamięcią współdzieloną używa się mechanizmów synchronizacji, takich jak mutexy (sync.Mutex), kanały (chan) lub operacje atomowe z pakietu sync/atomic.
Przykład użycia mutexu do ochrony dostępu do wspólnej zmiennej:
var mu sync.Mutex
var counter int
func increment() {
mu.Lock()
counter++
mu.Unlock()
}
Bez takich środków jednoczesny dostęp może prowadzić do nieprzewidywalnego zachowania programu.