Sobes.tech
Junior

Hoe in de programmeertaal (Go) detecteer je dat alle lopende goroutines zijn voltooid en dat de hoofdthread de resultaten kan gebruiken?

sobes.tech AI

Antwoord van AI

In Go wordt het type sync.WaitGroup meestal gebruikt om de voltooiing van alle lopende goroutines bij te houden. Het stelt de hoofdthread in staat te wachten totdat alle goroutines hun uitvoering hebben voltooid.

Voorbeeld van gebruik:

var wg sync.WaitGroup

wg.Add(3) // wacht op 3 goroutines

for i := 0; i < 3; i++ {
    go func(id int) {
        defer wg.Done() // signaleert het einde van de goroutine
        // werk van de goroutine
        fmt.Println("Goroutine", id, "voltooid")
    }(i)
}

wg.Wait() // de hoofdthread wordt geblokkeerd totdat de teller van wg op 0 staat
fmt.Println("Alle goroutines zijn voltooid, resultaten kunnen worden gebruikt")

Op deze manier maakt WaitGroup het mogelijk om de uitvoering te synchroniseren en te garanderen dat de controlerende thread wacht tot alle parallelle taken zijn voltooid.