Sobes.tech
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.