Junior — Middle
Могат ли различни нишки да взаимодействат едновременно с един и същи адрес на паметта?
sobes.tech AI
Отговор от AI
Да, в Go различните горутини (нишки) могат едновременно да достъпват една и съща адрес на паметта. Това обаче може да доведе до състояния на гонка (race conditions), ако достъпът не е синхронизиран. За безопасна работа с общата памет се използват механизми за синхронизация като мьютекси (sync.Mutex), канали (chan) или атомарни операции от пакета sync/atomic.
Пример за използване на мьютекс за защита на достъпа до обща променлива:
var mu sync.Mutex
var counter int
func increment() {
mu.Lock()
counter++
mu.Unlock()
}
Без такива мерки, едновременният достъп може да доведе до непредсказуемо поведение на програмата.