Sobes.tech
Middle — Middle+

Jak je zajištěna asynchronní práce datové struktury Map?

sobes.tech AI

Odpověď od AI

V Go standardní datové struktuře map není bezpečná pro současný přístup z více gorutin. Asynchronní (konkurenční) práce s map vyžaduje další synchronizaci.

Pro bezpečnou práci s map v konkurenčním prostředí se obvykle používají:

  • Mutexy (sync.Mutex nebo sync.RWMutex) — obalují operace čtení a zápisu do zámků, aby se zabránilo závodům.
  • Balíček sync.Map — specializovaná, vlákny bezpečná implementace mapy, optimalizovaná pro případy s velkým počtem gorutin a vzácnými změnami.

Příklad s sync.Map:

var m sync.Map

// Zápis
m.Store("key", "value")

// Čtení
if val, ok := m.Load("key"); ok {
    fmt.Println(val)
}

// Odstranění
m.Delete("key")

Tímto způsobem je asynchronní práce s map v Go dosažena buď pomocí explicitní synchronizace, nebo použitím bezpečných struktur z knihovny standardu.