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