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.