Junior — Middle
Hoe kun je bepalen dat alle kind-goroutines in een Go-programma zijn voltooid?
sobes.tech AI
Antwoord van AI
In Go wordt meestal synchronisatie met het type sync.WaitGroup gebruikt om te bepalen wanneer alle kind-goroutines klaar zijn.
Voorbeeld:
var wg sync.WaitGroup
wg.Add(3) // wacht op 3 goroutines
for i := 0; i < 3; i++ {
go func(id int) {
defer wg.Done() // signaleer voltooiing
// werk van de goroutine
fmt.Println("Goroutine", id, "voltooid")
}(i)
}
wg.Wait() // wacht totdat alle goroutines Done hebben aangeroepen
fmt.Println("Alle goroutines voltooid")
Op deze manier kan de hoofd-goroutine wachten op de voltooiing van alle kind-goroutines.