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.Mutexnebosync.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.