Sobes.tech
Junior — Middle

Pot fi diferite fire să interacționeze simultan cu aceeași adresă de memorie?

sobes.tech AI

Răspuns de la AI

Da, în Go, diferite goroutines (fire de execuție) pot accesa simultan aceeași adresă de memorie. Cu toate acestea, acest lucru poate duce la condiții de cursă dacă accesul nu este sincronizat. Pentru interacțiuni sigure cu memoria partajată, se utilizează mecanisme de sincronizare, cum ar fi mutex-uri (sync.Mutex), canale (chan) sau operații atomice din pachetul sync/atomic.

Exemplu de utilizare a unui mutex pentru a proteja accesul la o variabilă comună:

var mu sync.Mutex
var counter int

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

Fără astfel de măsuri, accesul simultan poate duce la comportamente imprevizibile ale programului.