Junior — Middle
Aké dôsledky majú súčasné zápisy do Mapy z rôznych konkurenčných gorutín?
sobes.tech AI
Odpoveď od AI
V Go štandardná mapa (map) nie je bezpečná pre súčasné čítanie a zápis z viacerých gorútín. Ak niekoľko gorútín súčasne skúsi zapisovať do rovnakej mapy bez synchronizácie, povedie to ku konkurenčným podmienkam, panike počas behu (fatálna chyba: súčasné zápisy do mapy) a nepredvídateľnému správaniu programu.
Aby ste predišli problémom, musíte použiť:
- Mutexy (sync.Mutex) na ochranu prístupu k mape.
- Špecializované bezpečné dátové štruktúry, ako je sync.Map.
Príklad s mutexom:
var mu sync.Mutex
var m = make(map[string]int)
func write(key string, value int) {
mu.Lock()
m[key] = value
mu.Unlock()
}
Bez takejto ochrany môže program neočakávane skončiť.