Goroutine và channel của Go cho phép một tập các pattern concurrency được thiết lập tốt, giải quyết các vấn đề phổ biến — phân phối công việc, fan-out/fan-in, pipeline, và rate limiting. Biết các pattern idiomatic này cho phép bạn xây dựng các hệ thống concurrent đúng đắn, hiệu quả.
Worker pool — concurrency có giới hạn
{
wg sync.WaitGroup
w := ; w < numWorkers; w++ {
wg.Add()
{
wg.Done()
job := jobs {
results <- process(job)
}
}()
}
wg.Wait()
(results)
}
