Junior
Waarvoor wordt WaitGroup in Go gebruikt?
sobes.tech AI
Antwoord van AI
WaitGroup wordt gebruikt om het werk van één of meerdere goroutines te synchroniseren. Het stelt de hoofd-goroutine in staat te wachten tot andere gemaakte goroutines klaar zijn. Het bestaat uit een teller die wordt verhoogd bij het maken van een goroutine en verlaagd wanneer deze eindigt.
Belangrijkste methoden:
Add(delta int): Verhoogt of verlaagt de teller van goroutines.Done(): Verlaagt de teller met 1. Wordt meestal aan het einde van een goroutine aangeroepen (vaak metdefer).Wait(): Blokkeert de uitvoering totdat de teller nul is.
Voorbeeld van gebruik:
package main
import (
"fmt"
"sync"
)
func worker(id int, wg *sync.WaitGroup) {
defer wg.Done() // Verlaagt de teller bij het einde van de goroutine
fmt.Printf("Goroutine %d begint\n", id)
// Simulatie van werk
// time.Sleep(time.Second)
fmt.Printf("Goroutine %d eindigt\n", id)
}
func main() {
var wg sync.WaitGroup // Maak een WaitGroup
for i := 1; i <= 5; i++ {
wg.Add(1) // Verhoog de teller voor elke goroutine
go worker(i, &wg) // Start de goroutine, geef een pointer naar de WaitGroup door
}
wg.Wait() // Wacht tot de teller 0 is (alle goroutines eindigen)
fmt.Println("Alle goroutines zijn klaar")
}