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