Junior — Middle
Explique ce qu'est sync.Map et quels sont ses avantages par rapport aux cartes normales en Go.
sobes.tech IA
Réponse de l'IA
sync.Map — c'est une implémentation thread-safe d'un dictionnaire (map) en Go, conçue pour un accès concurrent sans avoir besoin d'utiliser explicitement des mutex.
Avantages de sync.Map par rapport à un map classique :
- Sécurité thread-safe : Permet de lire et écrire en toute sécurité depuis plusieurs goroutines en même temps.
- Optimisation pour les lectures fréquentes : Utilise des mécanismes internes qui rendent les opérations de lecture très rapides.
- Pas besoin de gérer manuellement les verrouillages : Simplifie le code en évitant l'utilisation de
sync.Mutex.
Cependant, sync.Map peut être moins efficace lors de nombreuses écritures et suppressions comparé à un map classique avec mutex.
Exemple d'utilisation :
type Cache struct {
data sync.Map
}
func (c *Cache) Get(key string) (interface{}, bool) {
return c.data.Load(key)
}
func (c *Cache) Set(key string, value interface{}) {
c.data.Store(key, value)
}