Junior — Middle
Quali situazioni possono verificarsi durante la scrittura simultanea in un archivio di tipo mappa?
sobes.tech AI
Risposta dell'AI
In Go, la mappa standard (map) non è sicura per l'accesso concorrente durante la lettura e la scrittura simultanea da parte di più goroutine. Se più goroutine scrivono dati in una mappa senza sincronizzazione, ciò può causare un panic in runtime con il messaggio "concurrent map writes" o un comportamento imprevedibile del programma.
Per evitare tali problemi, si devono usare meccanismi di sincronizzazione come mutex (sync.Mutex) o strutture specializzate come sync.Map, che sono sicure per l'accesso concorrente.
Esempio con mutex:
var mu sync.Mutex
var m = make(map[string]int)
func writeToMap(key string, value int) {
mu.Lock()
defer mu.Unlock()
m[key] = value
}
Senza questa protezione, le scritture simultanee possono danneggiare i dati o causare l'arresto imprevisto del programma.