Junior — Middle
Come si può determinare che tutte le goroutine figlie hanno terminato l'esecuzione in un programma Go?
sobes.tech AI
Risposta dell'AI
In Go, per determinare il completamento di tutte le goroutine figlie, si utilizza generalmente la sincronizzazione con il tipo sync.WaitGroup.
Esempio:
var wg sync.WaitGroup
wg.Add(3) // aspettiamo 3 goroutine
for i := 0; i < 3; i++ {
go func(id int) {
defer wg.Done() // segnala il completamento
// lavoro della goroutine
fmt.Println("Goroutine", id, "completata")
}(i)
}
wg.Wait() // blocca finché tutte le goroutine non chiamano Done
fmt.Println("Tutte le goroutine sono completate")
In questo modo, WaitGroup permette alla goroutine principale di attendere il completamento di tutte le goroutine figlie.