Go's goroutines en channels maken een reeks goed gevestigde concurrency patterns mogelijk die veel voorkomende problemen oplossen — werk distribueren, fanning out/in, pipelines en rate limiting. Het kennen van deze idiomatische patronen stelt je in staat om correcte en efficiënte gelijktijdige systemen te bouwen.
Worker pool — bounded concurrency
{
wg sync.WaitGroup
w := ; w < numWorkers; w++ {
wg.Add()
{
wg.Done()
job := jobs {
results <- process(job)
}
}()
}
wg.Wait()
(results)
}
