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