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.