Junior — Middle
Jaké důsledky nastávají při současném zápisu do Mapy z různých konkurenčních gorutin?
sobes.tech AI
Odpověď od AI
V Go standardní mapě (map) není bezpečná pro současné čtení a zápis z více gorutin. Pokud několik gorutin současně zkouší zapisovat do stejné mapy bez synchronizace, povede to ke konkurenčním podmínkám, panice za běhu (fatální chyba: současné zápisy do mapy) a nepředvídatelnému chování programu.
Aby se předešlo problémům, je třeba použít:
- Mutexy (sync.Mutex) k ochraně přístupu k mapě.
- Specializované bezpečné datové struktury pro více vláken, například sync.Map.
Příklad s mutexem:
var mu sync.Mutex
var m = make(map[string]int)
func write(key string, value int) {
mu.Lock()
m[key] = value
mu.Unlock()
}
Bez takové ochrany může program neočekávaně skončit.