Sobes.tech
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.