Junior — Middle
Ar galima užtikrinti saugumą rašant į Map iš kelių srautų vienu metu?
sobes.tech AI
Atsakymas iš AI
Go standarto žemėlapis (map) nėra saugus vienu metu rašyti iš kelių gorutinių. Jei keli gorutinai rašo į map vienu metu be sinchronizacijos, tai sukels paniką.
Norint užtikrinti saugumą rašant vienu metu, galima:
- Naudoti mutex (sync.Mutex arba sync.RWMutex), kad apsaugotumėte prieigą prie map.
- Naudoti specializuotas saugias daugiagretės struktūras, pvz., sync.Map, kurios skirtos konkurenciniam prieigai.
Pavyzdys su 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
}
Arba naudoti sync.Map:
var m sync.Map
func safeWrite(key string, value int) {
m.Store(key, value)
}
Taip, norint užtikrinti saugumą rašant vienu metu, būtina naudoti sinchronizaciją.