Middle — Middle+
Come viene eseguito il lavoro asincrono della struttura dati Map?
sobes.tech AI
Risposta dell'AI
In Go, la struttura dati map standard non è sicura per l'accesso concorrente da parte di più goroutine. Lavorare in modo asincrono (concorrente) con map richiede sincronizzazione aggiuntiva.
Per lavorare in modo sicuro con map in un ambiente concorrente, si utilizzano generalmente:
- Mutex (
sync.Mutexosync.RWMutex) — avvolgono le operazioni di lettura e scrittura in blocchi per evitare condizioni di gara. - Pacchetto
sync.Map— un'implementazione specializzata e thread-safe di mappe, ottimizzata per casi con molte goroutine e poche modifiche.
Esempio con sync.Map:
var m sync.Map
// Scrittura
m.Store("key", "value")
// Lettura
if val, ok := m.Load("key"); ok {
fmt.Println(val)
}
// Eliminazione
m.Delete("key")
In questo modo, il lavoro asincrono con map in Go si ottiene tramite sincronizzazione esplicita o utilizzando strutture thread-safe della libreria standard.