Junior — Middle
Possono diversi thread interagire contemporaneamente con lo stesso indirizzo di memoria?
sobes.tech AI
Risposta dell'AI
Sì, in Go diverse goroutine (thread) possono accedere contemporaneamente allo stesso indirizzo di memoria. Tuttavia, ciò può portare a condizioni di gara se l'accesso non è sincronizzato. Per interagire in modo sicuro con la memoria condivisa, si utilizzano meccanismi di sincronizzazione come mutex (sync.Mutex), canali (chan) o operazioni atomiche del pacchetto sync/atomic.
Esempio di utilizzo di un mutex per proteggere l'accesso a una variabile condivisa:
var mu sync.Mutex
var counter int
func increment() {
mu.Lock()
counter++
mu.Unlock()
}
Senza queste misure, l'accesso simultaneo può portare a comportamenti imprevedibili del programma.