Sobes.tech
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)
}