Sobes.tech
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.Mutex alebo sync.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.