Middle — Middle+
Hoe wordt de asynchrone werking van de gegevensstructuur Map uitgevoerd?
sobes.tech AI
Antwoord van AI
In Go is de standaardgegevensstructuur map niet thread-safe voor gelijktijdige toegang vanuit meerdere goroutines. Asynchroon (concurrent) werken met map vereist extra synchronisatie.
Om veilig te werken met map in een gelijktijdige omgeving, worden meestal gebruikt:
- Mutexen (
sync.Mutexofsync.RWMutex) — om lees- en schrijfbewerkingen in blokkades te plaatsen om racecondities te voorkomen. - Pakket
sync.Map— een gespecialiseerde, thread-veilige implementatie van een kaart, geoptimaliseerd voor gevallen met veel goroutines en zeldzame wijzigingen.
Voorbeeld met sync.Map:
var m sync.Map
// Schrijven
m.Store("key", "value")
// Lezen
if val, ok := m.Load("key"); ok {
fmt.Println(val)
}
// Verwijderen
m.Delete("key")
Op deze manier wordt asynchroon werken met map in Go bereikt door ofwel expliciete synchronisatie of door gebruik te maken van thread-safe structuren uit de standaardbibliotheek.