Sobes.tech
Junior — Middle

Aké situácie môžu nastať pri súčasnom zápise do úložiska typu mapa?

sobes.tech AI

Odpoveď od AI

V jazyku Go nie je štandardná mapa (map) bezpečná pre súčasné čítanie a zápis z viacerých gorutín. Ak niekoľko gorutín súčasne zapisuje údaje do mapy bez synchronizácie, môže to viesť k panike počas behu s hlásením "concurrent map writes" alebo k nepredvídateľnému správaniu programu.

Aby ste predišli takýmto problémom, musíte použiť mechanizmy synchronizácie, ako je mutex (sync.Mutex) alebo špecializované štruktúry, ako je sync.Map, ktoré sú bezpečné pre konkurenčný prístup.

Príklad s mutexom:

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 takejto ochrany môže súčasný zápis viesť k poškodeniu dát alebo k neočakávanému ukončeniu programu.