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.