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