Goroutines na channels za Go zinawezesha seti ya mifumo ya concurrency iliyothibitishwa vizuri ambayo hutatua matatizo ya kawaida — kugawanya kazi, fan-out/in, pipelines, na rate limiting. Kujua mifumo hii ya kiidiomatiki kunakuwezesha kujenga mifumo ya concurrent iliyo sahihi na yenye ufanisi.
Worker pool — concurrency yenye mipaka
{
wg sync.WaitGroup
w := ; w < numWorkers; w++ {
wg.Add()
{
wg.Done()
job := jobs {
results <- process(job)
}
}()
}
wg.Wait()
(results)
}
