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