Sobes.tech
Junior — Middle

Quelles sont les conséquences lorsqu'on écrit simultanément dans un Map depuis différentes goroutines concurrentes?

sobes.tech IA

Réponse de l'IA

En Go, la carte standard (map) n'est pas sûre pour l'accès concurrentiel en lecture et écriture depuis plusieurs goroutines. Si plusieurs goroutines tentent d'écrire simultanément dans la même map sans synchronisation, cela entraînera des conditions de course, une panique runtime (erreur fatale : écritures concurrentes dans la map) et un comportement imprévisible du programme.

Pour éviter ces problèmes, il faut utiliser :

  • Des mutex (sync.Mutex) pour protéger l'accès à la map.
  • Des structures de données sécurisées pour la concurrence, comme sync.Map.

Exemple avec mutex :

var mu sync.Mutex
var m = make(map[string]int)

func write(key string, value int) {
    mu.Lock()
    m[key] = value
    mu.Unlock()
}

Sans cette protection, le programme peut se terminer de manière inattendue.