Junior — Middle
Heeft u in uw projecten gebruik gemaakt van het synchronisatie-mechanisme met sync.WaitGroup?
sobes.tech AI
Antwoord van AI
Ja, in Go-projecten wordt sync.WaitGroup vaak gebruikt om goroutines te synchroniseren. Dit mechanisme maakt het mogelijk te wachten tot een groep parallelle taken voltooid is voordat je verdergaat.
Werking principe:
- Er wordt een
WaitGroup-object aangemaakt. - Voor het starten van elke goroutine wordt
Add(1)aangeroepen om de teller te verhogen. - Binnen de goroutine, na het voltooien van het werk, wordt
Done()aangeroepen, wat de teller verlaagt. - De hoofd-goroutine roept
Wait()aan, die blokkeert totdat de teller nul is.
Voorbeeld:
var wg sync.WaitGroup
wg.Add(2) // wachten op 2 goroutines
go func() {
defer wg.Done()
// werk van de eerste goroutine
}()
go func() {
defer wg.Done()
// werk van de tweede goroutine
}()
wg.Wait() // wachten tot beide klaar zijn
Dit is handig om parallelle operaties te coördineren en te voorkomen dat het programma voortijdig eindigt.