Junior — Middle
Koje posledice nastaju kada se istovremeno zapisuje u Map iz različitih konkurentnih gorutina?
sobes.tech АИ
Одговор од АИ
U Go, standardna mapa (map) nije sigurna za istovremeni pristup za čitanje i pisanje iz više gorutina. Ako više gorutina istovremeno pokušaju da pišu u istu mapu bez sinhronizacije, to će dovesti do uslova trke, panike u runtime-u (fatali greška: istovremeni zapisi u mapu) i nepredvidivog ponašanja programa.
Da biste izbegli probleme, morate koristiti:
- Mutex (sync.Mutex) za zaštitu pristupa mapi.
- Specijalizovane strukture podataka bezbedne za konkurentni pristup, poput sync.Map.
Primer sa mutex-om:
var mu sync.Mutex
var m = make(map[string]int)
func write(key string, value int) {
mu.Lock()
m[key] = value
mu.Unlock()
}
Bez ove zaštite, program može neočekivano da se zatvori.