Middle — Middle+
Comment le travail asynchrone de la structure de données Map est-il effectué?
sobes.tech IA
Réponse de l'IA
Dans Go, la structure de données standard map n'est pas sûre pour un accès concurrentiel depuis plusieurs goroutines. Travailler de manière asynchrone (concurrente) avec map nécessite une synchronisation supplémentaire.
Pour travailler en toute sécurité avec map dans un environnement concurrentiel, on utilise généralement :
- Mutex (
sync.Mutexousync.RWMutex) — enveloppent les opérations de lecture et d'écriture dans des verrouillages pour éviter les conditions de course. - Package
sync.Map— une implémentation spécialisée et sûre pour la concurrence de cartes, optimisée pour les cas avec beaucoup de goroutines et peu de modifications.
Exemple avec sync.Map :
var m sync.Map
// Écriture
m.Store("key", "value")
// Lecture
if val, ok := m.Load("key"); ok {
fmt.Println(val)
}
// Suppression
m.Delete("key")
Ainsi, le travail asynchrone avec map en Go est réalisé soit par une synchronisation explicite, soit en utilisant des structures thread-safe de la bibliothèque standard.