Junior — Middle
Este posibil să asigurați siguranța în timpul scrierii simultane în Map din mai multe fire?
sobes.tech AI
Răspuns de la AI
În Go, harta standard (map) nu este sigură pentru accesul concurent în scriere de către mai multe goroutines. Dacă mai multe goroutines scriu simultan în map fără sincronizare, va avea loc o panică.
Pentru a asigura siguranța în timpul scrierii concurente, se poate:
- Folosi un mutex (sync.Mutex sau sync.RWMutex) pentru a proteja accesul la map.
- Folosi structuri de date specializate, sigure pentru concurență, precum sync.Map, care sunt destinate accesului concurent.
Exemplu cu 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
}
Sau folosi sync.Map:
var m sync.Map
func safeWrite(key string, value int) {
m.Store(key, value)
}
Astfel, pentru siguranța în timpul scrierii concurente, trebuie utilizată sincronizarea.