Sobes.tech
Senior

Heb je besloten om WaitGroup te schrijven omdat er een kanaal verscheen of omdat je goroutines voor iets besloot te schrijven?

sobes.tech AI

Antwoord van AI

WaitGroup in Go wordt gebruikt om te wachten tot een groep goroutines is voltooid.

Als je meerdere goroutines hebt die parallel taken uitvoeren en je wilt wachten tot ze allemaal klaar zijn voordat je verdergaat, is WaitGroup een handig hulpmiddel.

Kanalen en goroutines zijn verschillende mechanismen. Een kanaal wordt gebruikt voor communicatie en synchronisatie tussen goroutines, terwijl WaitGroup wordt gebruikt om te wachten tot ze klaar zijn.

Bijvoorbeeld, als je goroutines hebt die taken uitvoeren en je wilt wachten tot ze allemaal klaar zijn, gebruik je WaitGroup:

var wg sync.WaitGroup
wg.Add(3) // wachten op 3 goroutines

for i := 0; i < 3; i++ {
    go func(id int) {
        defer wg.Done()
        // werk van de goroutine
        fmt.Println("Goroutine", id, "klaar")
    }(i)
}

wg.Wait() // wachten tot alle goroutines klaar zijn

Op deze manier wordt WaitGroup precies gebruikt omdat er goroutines zijn die gesynchroniseerd moeten worden bij hun voltooiing, niet vanwege het ontstaan van kanalen.