Sobes.tech
Junior — Middle

Ce tableau garantit-il la sécurité lors de son utilisation dans un environnement multithread?

sobes.tech IA

Réponse de l'IA

En Go, les slices ordinaires (tableaux à taille dynamique) ne sont pas sûrs pour la concurrence par défaut. Si plusieurs goroutines lisent et écrivent dans le même slice sans synchronisation, cela entraînera des conditions de course et un comportement imprévisible.

Pour assurer la sécurité dans un environnement multithread, il faut utiliser :

  • Des mutex (sync.Mutex) pour verrouiller l'accès lors de la modification du slice.
  • Des canaux (chan) pour la transmission de données entre goroutines.
  • Des structures de données spécialisées du paquet sync ou de bibliothèques externes.

Exemple avec mutex :

var mu sync.Mutex
var slice []int

func appendSafe(val int) {
    mu.Lock()
    defer mu.Unlock()
    slice = append(slice, val)
}

Sans ces mesures, le tableau n'est pas sécurisé pour une utilisation parallèle.