Junior — Middle
Hoe implementeer je een synchrone wachttijd voor het voltooien van meerdere parallelle taken in een Go-programma?
sobes.tech AI
Antwoord van AI
In Go wordt sync.WaitGroup gewoonlijk gebruikt om synchroon te wachten op de voltooiing van meerdere parallelle taken. Het stelt je in staat om meerdere goroutines te starten en te wachten tot ze klaar zijn.
Voorbeeld:
package main
import (
"fmt"
"sync"
)
func worker(id int, wg *sync.WaitGroup) {
defer wg.Done() // Informeer de WaitGroup dat de taak is voltooid
fmt.Printf("Werker %d gestart\n", id)
// simulatie van werk
// time.Sleep(time.Second)
fmt.Printf("Werker %d voltooid\n", id)
}
func main() {
var wg sync.WaitGroup
numWorkers := 3
wg.Add(numWorkers) // Stel het aantal taken in
for i := 1; i <= numWorkers; i++ {
go worker(i, &wg)
}
wg.Wait() // Wacht tot alle goroutines klaar zijn
fmt.Println("Alle werkers klaar")
}
Op deze manier maakt WaitGroup het mogelijk om de uitvoering van parallelle taken efficiënt te synchroniseren.