Sobes.tech
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.