Junior — Middle
Que se passe-t-il si plusieurs goroutines tentent d'accéder simultanément à une même clé dans une carte?
sobes.tech IA
Réponse de l'IA
En Go, une carte (map) n'est pas une structure de données sûre pour l'accès concurrent. Si plusieurs goroutines tentent de lire et/ou d'écrire dans la même carte sans synchronisation, cela entraînera des conditions de course et probablement un panic à l'exécution.
Pour éviter cela, il est nécessaire d'utiliser des mécanismes de synchronisation, par exemple :
sync.Mutexpour verrouiller l'accès à la carte.sync.RWMutexpour séparer les verrouillages de lecture et d'écriture.- Structures spécialisées, comme
sync.Map, qui sont sûres pour l'accès concurrent.
Exemple d'utilisation de sync.Mutex pour protéger une carte :
var mu sync.Mutex
var m = make(map[string]int)
func write(key string, value int) {
mu.Lock()
defer mu.Unlock()
m[key] = value
}
func read(key string) int {
mu.Lock()
defer mu.Unlock()
return m[key]
}