Middle — Middle+
Ako sa vykonáva asynchrónna práca dátovej štruktúry Map?
sobes.tech AI
Odpoveď od AI
V Go štandardná dátová štruktúra map nie je bezpečná pre súčasný prístup z viacerých gorútín. Asynchrónna (konkurentná) práca s map vyžaduje dodatočnú synchronizáciu.
Na bezpečnú prácu s map v konkurenčnom prostredí sa zvyčajne používajú:
- Mutexy (
sync.Mutexalebosync.RWMutex) — obalujú operácie čítania a zápisu do zámkov, aby sa predišlo závodom. - Balík
sync.Map— špecializovaná, vlákno-bezpečná implementácia mapy, optimalizovaná pre prípady s veľkým počtom gorútin a zriedkavými zmenami.
Príklad s sync.Map:
var m sync.Map
// Zápis
m.Store("key", "value")
// Čítanie
if val, ok := m.Load("key"); ok {
fmt.Println(val)
}
// Vymazanie
m.Delete("key")
Týmto spôsobom je asynchrónna práca s map v Go dosiahnutá buď pomocou explicitnej synchronizácie, alebo použitím bezpečných štruktúr z knižnice štandardu.