Junior — Middle
Wat gebeurt er als meerdere goroutines tegelijkertijd proberen toegang te krijgen tot dezelfde sleutel in een kaart?
sobes.tech AI
Antwoord van AI
In Go is een kaart (map) geen thread-veilige datastructuur. Als meerdere goroutines tegelijkertijd proberen te lezen en/of schrijven in dezelfde kaart zonder synchronisatie, leidt dit tot racecondities en waarschijnlijk een panic tijdens runtime.
Om dit te voorkomen, moeten synchronisatie-mechanismen worden gebruikt, bijvoorbeeld:
sync.Mutexom toegang tot de kaart te blokkeren.sync.RWMutexom lees- en schrijfsleutels te scheiden.- Gespecialiseerde structuren zoals
sync.Map, die veilig zijn voor gelijktijdige toegang.
Voorbeeld van het gebruik van sync.Mutex om een kaart te beschermen:
var mu sync.Mutex
var m = make(map[string]int)
func write(key string, value int) {
mu.Lock()
defer mu.Unlock()
m[key] = value
}
func read(key string) int {
mu.Lock()
defer mu.Unlock()
return m[key]
}