Go's Goroutines und Channels ermöglichen eine Reihe von etablierten Concurrency-Mustern, die häufige Probleme lösen — Verteilung von Arbeit, Fan-out/in, Pipelines und Rate Limiting. Die Kenntnis dieser idiomatischen Muster ermöglicht es dir, korrekte und effiziente Concurrent-Systeme zu erstellen.
Worker Pool — Concurrency begrenzen
{
wg sync.WaitGroup
w := ; w < numWorkers; w++ {
wg.Add()
{
wg.Done()
job := jobs {
results <- process(job)
}
}()
}
wg.Wait()
(results)
}
