Junior — Middle
Quali sono le conseguenze di scrivere contemporaneamente in una Map da diverse goroutine concorrenti?
sobes.tech AI
Risposta dell'AI
In Go, la mappa standard (map) non è sicura per l'accesso concorrente in lettura e scrittura da più goroutine. Se più goroutine tentano di scrivere contemporaneamente nella stessa mappa senza sincronizzazione, ciò porterà a condizioni di gara, panic in runtime (errore fatale: scritture concorrenti sulla mappa) e comportamento imprevedibile del programma.
Per evitare problemi, bisogna usare:
- Mutex (sync.Mutex) per proteggere l'accesso alla mappa.
- Strutture dati sicure per la concorrenza, come sync.Map.
Esempio con mutex:
var mu sync.Mutex
var m = make(map[string]int)
func write(key string, value int) {
mu.Lock()
m[key] = value
mu.Unlock()
}
Senza questa protezione, il programma può terminare in modo imprevisto.