Middle+
Vertel me meer over WaitGroup: hoe werkt het, wat doen Add, Done, Wait?
sobes.tech AI
Antwoord van AI
WaitGroup in Go wordt gebruikt om te wachten tot een groep goroutines is voltooid.
- Add(n int) — verhoogt de teller met n, meestal aangeroepen voordat goroutines worden gestart.
- Done() — verlaagt de teller met 1, wordt aangeroepen binnen de goroutine na voltooiing van de taak.
- Wait() — blokkeert de uitvoering totdat de teller nul is, dat wil zeggen, totdat alle goroutines Done hebben aangeroepen.
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()
fmt.Println("Goroutine", id, "voltooid")
}(i)
}
wg.Wait() // wacht tot alle goroutines klaar zijn
fmt.Println("Alle goroutines zijn voltooid")
Op deze manier helpt WaitGroup bij het synchroniseren van parallelle taken en het wachten op hun voltooiing.