Junior — Middle
Is het mogelijk om veiligheid te garanderen bij gelijktijdig schrijven naar een Map vanuit meerdere threads?
sobes.tech AI
Antwoord van AI
In Go is de standaardkaart (map) niet thread-safe voor gelijktijdige schrijfbewerkingen door meerdere goroutines. Als meerdere goroutines tegelijkertijd in een map schrijven zonder synchronisatie, leidt dit tot een panic.
Om veiligheid te garanderen bij gelijktijdige schrijfbewerkingen, kun je:
- Een mutex (sync.Mutex of sync.RWMutex) gebruiken om de toegang tot de map te beschermen.
- Gespecialiseerde thread-safe datastructuren gebruiken, zoals sync.Map, die ontworpen is voor gelijktijdige toegang.
Voorbeeld met mutex:
var mu sync.Mutex
var m = make(map[string]int)
func safeWrite(key string, value int) {
mu.Lock()
defer mu.Unlock()
m[key] = value
}
Of gebruik sync.Map:
var m sync.Map
func safeWrite(key string, value int) {
m.Store(key, value)
}
Dus, voor veiligheid bij gelijktijdige schrijfbewerkingen, moet synchronisatie worden gebruikt.