Junior — Middle
Hoe garandeer je dat alle lopende goroutines in een programma worden voltooid?
sobes.tech AI
Antwoord van AI
In Go is er geen ingebouwde manier om een goroutine van buitenaf geforceerd te beëindigen. Om er zeker van te zijn dat alle lopende goroutines eindigen, wordt meestal synchronisatie met sync.WaitGroup gebruikt.
Werking principe:
- Voor het starten van elke goroutine wordt
wg.Add(1)aangeroepen. - Aan het einde van de goroutine wordt
wg.Done()aangeroepen. - In de hoofdfunctie wordt
wg.Wait()aangeroepen, dat de uitvoering blokkeert totdat de teller nul is.
Voorbeeld:
var wg sync.WaitGroup
wg.Add(1)
go func() {
defer wg.Done()
// werk van de goroutine
}()
wg.Wait() // wachten tot alle goroutines klaar zijn
Op deze manier wacht het programma gegarandeerd tot alle goroutines klaar zijn voordat het verdergaat of afsluit.