Junior — Middle
Kunt u uitleggen hoe het wachtmechanisme voor het voltooien van meerdere goroutines in Go werkt met behulp van WaitGroup?
sobes.tech AI
Antwoord van AI
In Go wordt het type sync.WaitGroup gebruikt om te wachten tot meerdere goroutines zijn voltooid. Het stelt je in staat om op meerdere goroutines te "abonneren" en de uitvoering te blokkeren totdat ze allemaal klaar zijn.
Belangrijkste methoden van WaitGroup:
- Add(n int) — verhoogt de teller met n, meestal aangeroepen voordat de goroutines worden gestart.
- Done() — verlaagt de teller met 1, wordt aan het einde van elke goroutine aangeroepen.
- Wait() — blokkeert de uitvoering totdat de teller 0 is.
Voorbeeld van gebruik:
var wg sync.WaitGroup
wg.Add(3) // wachten op 3 goroutines
for i := 0; i < 3; i++ {
go func(id int) {
defer wg.Done() // signaleer voltooiing
fmt.Printf("Goroutine %d bezig\n", id)
// wat werk
}(i)
}
wg.Wait() // wacht tot alle goroutines klaar zijn
fmt.Println("Alle goroutines voltooid")