Junior — Middle
Welke gevolgen heeft het gelijktijdig schrijven naar een Map vanuit verschillende concurrerende goroutines?
sobes.tech AI
Antwoord van AI
In Go is de standaardkaart (map) niet thread-safe voor gelijktijdig lezen en schrijven door meerdere goroutines. Als meerdere goroutines tegelijkertijd proberen te schrijven naar dezelfde map zonder synchronisatie, leidt dit tot racecondities, runtime paniek (fatale fout: gelijktijdige map-schrijfoperaties) en onvoorspelbaar gedrag van het programma.
Om problemen te voorkomen, moet je:
- Mutexen (sync.Mutex) gebruiken om de toegang tot de map te beschermen.
- Gespecialiseerde, thread-veilige datastructuren gebruiken, zoals sync.Map.
Voorbeeld met mutex:
var mu sync.Mutex
var m = make(map[string]int)
func write(key string, value int) {
mu.Lock()
m[key] = value
mu.Unlock()
}
Zonder deze bescherming kan het programma onverwacht crashen.