Junior — Middle
Comment peut-on déterminer que toutes les goroutines enfants ont terminé leur exécution dans un programme en Go?
sobes.tech IA
Réponse de l'IA
En Go, pour déterminer la fin de toutes les goroutines enfants, on utilise généralement la synchronisation avec le type sync.WaitGroup.
Exemple :
var wg sync.WaitGroup
wg.Add(3) // attend 3 goroutines
for i := 0; i < 3; i++ {
go func(id int) {
defer wg.Done() // signaler la fin
// travail de la goroutine
fmt.Println("Goroutine", id, "terminée")
}(i)
}
wg.Wait() // bloque jusqu'à ce que toutes les goroutines appellent Done
fmt.Println("Toutes les goroutines sont terminées")
Ainsi, WaitGroup permet à la goroutine principale d'attendre la fin de toutes les filles.