goroutine และ channel ของ Go ช่วยให้เกิดชุดของ concurrency pattern ที่เป็นที่ยอมรับกันดี ซึ่งแก้ปัญหาที่พบบ่อย เช่น การกระจายงาน, การ fan-out/in, pipeline และ rate limiting การรู้จัก pattern ที่เป็น idiomatic เหล่านี้ช่วยให้คุณสร้างระบบ concurrent ที่ถูกต้องและมีประสิทธิภาพได้
Worker pool — จำกัดขอบเขต concurrency
{
wg sync.WaitGroup
w := ; w < numWorkers; w++ {
wg.Add()
{
wg.Done()
job := jobs {
results <- process(job)
}
}()
}
wg.Wait()
(results)
}
