Senior
Je možné písať do jednej mapy z rôznych gorútín súčasne? Čo sa stane?
sobes.tech AI
Odpoveď od AI
V jazyku Go nie je bezpečné zapisovať do tej istej mapy z rôznych gorútín súčasne bez ďalšej synchronizácie. Štandardná mapa nie je vlákno-bezpečná a súčasné operácie zápisu môžu viesť k panike (runtime panic) alebo poškodeniu dát.
Pre bezpečné používanie mapy v konkurenčnom prostredí môžete:
- Použiť sync.Mutex alebo sync.RWMutex na ochranu prístupu k mape.
- Použiť sync.Map, špecializovanú a vlákno-bezpečnú dátovú štruktúru pre mapy.
Príklad s mutexom:
var (
m = make(map[string]int)
mu sync.Mutex
)
func write(key string, value int) {
mu.Lock()
m[key] = value
mu.Unlock()
}
Bez takejto ochrany môže program neočakávane skončiť.