Junior — Middle
Jaké situace mohou nastat při současném zápisu do úložiště typu mapy?
sobes.tech AI
Odpověď od AI
V jazyce Go není standardní mapa (map) bezpečná pro současné čtení a zápis z více gorutin. Pokud několik gorutin současně zapisuje data do mapy bez synchronizace, může dojít k panice za běhu s hlášením "concurrent map writes" nebo k nepředvídatelnému chování programu.
Aby se těmto problémům předešlo, je třeba používat synchronizační mechanismy, například mutex (sync.Mutex) nebo specializované struktury, jako je sync.Map, které jsou bezpečné pro konkurenční přístup.
Příklad s mutexem:
var mu sync.Mutex
var m = make(map[string]int)
func writeToMap(key string, value int) {
mu.Lock()
defer mu.Unlock()
m[key] = value
}
Bez takové ochrany může současný zápis vést ke ztrátě dat nebo k neočekávanému ukončení programu.