Sobes.tech
Junior — Middle

Comment garantir la terminaison de toutes les goroutines en cours d'exécution dans un programme?

sobes.tech IA

Réponse de l'IA

En Go, il n'existe pas de moyen intégré d'interrompre une goroutine de force depuis l'extérieur. Pour s'assurer que toutes les goroutines en cours se terminent, on utilise généralement la synchronisation avec sync.WaitGroup.

Principe de fonctionnement :

  • Avant de lancer chaque goroutine, on appelle wg.Add(1).
  • À la fin de la goroutine, on appelle wg.Done().
  • Dans la fonction principale, on appelle wg.Wait(), qui bloque l'exécution jusqu'à ce que le compteur atteigne zéro.

Exemple :

var wg sync.WaitGroup

wg.Add(1)
go func() {
    defer wg.Done()
    // travail de la goroutine
}()

wg.Wait() // attendre la fin de toutes les goroutines

Ainsi, le programme attendra garantissant que toutes les goroutines sont terminées avant de continuer ou de se terminer.