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