Middle — Middle+
Da li je sigurno vršiti zapis u map kontejner u višestrukom okruženju bez dodatne sinhronizacije?
sobes.tech АИ
Одговор од АИ
U Go-u, standardna mapa (map) nije sigurna za pisanje u okruženju sa više niti. Ako više gorutina istovremeno pišu u mapu bez sinhronizacije, doći će do trka i panike tokom izvršavanja.
Za sigurno pisanje u mapu u višestrukom nitnom okruženju, potrebno je koristiti:
- sync.Mutex ili sync.RWMutex za zaključavanje pristupa;
- sync.Map, sigurnu za niti implementaciju mape iz standardne biblioteke.
Primer sa sync.Mutex:
var mu sync.Mutex
var m = make(map[string]int)
func safeWrite(key string, value int) {
mu.Lock()
m[key] = value
mu.Unlock()
}
Bez ove sinhronizacije, pisanje u mapu nije sigurno.