Sobes.tech
Junior

Comment dans le langage de programmation (Go) détecter que tous les goroutines ont terminé et que le thread principal peut utiliser les résultats?

sobes.tech IA

Réponse de l'IA

En Go, pour suivre la fin de toutes les goroutines en cours d'exécution, on utilise généralement le type sync.WaitGroup. Il permet au thread principal d'attendre que toutes les goroutines aient terminé leur exécution.

Exemple d'utilisation :

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 de la goroutine
        // travail de la goroutine
        fmt.Println("Goroutine", id, "terminée")
    }(i)
}

wg.Wait() // le thread principal se bloque jusqu'à ce que le compteur de wg atteigne 0
fmt.Println("Toutes les goroutines sont terminées, les résultats peuvent être utilisés")

Ainsi, WaitGroup permet de synchroniser l'exécution et de garantir que le thread principal attend la fin de toutes les tâches parallèles.