Sobes.tech
Junior — Middle

Vai dažādi pavedieni var vienlaikus mijiedarboties ar to pašu atmiņas adresi?

sobes.tech AI

Atbilde no AI

Jā, Go dažādas gorutinas (šūnas) var vienlaikus piekļūt tai pašai atmiņas adresei. Tomēr tas var novest pie sacensību stāvokļiem (race conditions), ja piekļuve nav sinhronizēta. Drošai mijiedarbībai ar kopīgo atmiņu tiek izmantoti sinhronizācijas mehānismi, piemēram, mutexi (sync.Mutex), kanāli (chan) vai atomu operācijas no pakotnes sync/atomic.

Piemērs, kā izmantot mutexu, lai aizsargātu piekļuvi kopīgai mainīgajai:

var mu sync.Mutex
var counter int

func increment() {
    mu.Lock()
    counter++
    mu.Unlock()
}

Bez šiem pasākumiem vienlaicīga piekļuve var novest pie neparedzama programmas uzvedības.