今日观点!go的数据类型-其他数据类型-channel(二)
(资料图片仅供参考)
Channel的使用示例
以下是一个使用Channel的示例程序,该程序创建了两个Goroutine,并使用Channel在它们之间进行通信和同步。
package mainimport ("fmt""time")func worker(id int, jobs <-chan int, results chan<- int) {for j := range jobs {fmt.Printf("worker %d started job %d\n", id, j)time.Sleep(time.Second)fmt.Printf("worker %d finished job %d\n", id, j)results <- j * 2}}func main() {jobs := make(chan int, 100)results := make(chan int, 100)for w := 1; w <= 3; w++ {go worker(w, jobs, results)}for j := 1; j <= 9; j++ {jobs <- j}close(jobs)for a := 1; a <= 9; a++ {<-results}}
在这个示例程序中,我们定义了一个名为worker
的函数,它模拟了一个工作任务。这个函数接收一个jobs
的单向Channel用于接收工作任务,以及一个results
的单向Channel用于发送工作结果。当函数接收到一个工作任务时,它会等待一秒钟,然后将工作结果发送到results
的Channel中。
在main
函数中,我们创建了两个Channel:一个jobs
的Channel用于发送工作任务,一个results
的Channel用于接收工作结果。然后,我们启动了三个Goroutine,并将它们分别分配给worker
函数。接下来,我们向jobs
的Channel中发送了9个工作任务,并关闭了这个Channel。最后,我们从results
的Channel中接收了9个工作结果。
在这个示例程序中,我们使用Channel实现了工作任务的分配和工作结果的收集。通过使用Channel,我们可以轻松地实现Goroutine之间的通信和同步,从而使程序变得简单和高效。
关键词:
- 今日观点!go的数据类型-其他数据类型-channel(二)
- 多国报告XBB.1.16变异株!肆虐印度!国家疾控局回应|环球聚焦
- 樊振东输球原因曝光!19岁黑马笑称,赢在发球,王皓叫暂停惹争议
- 【报资讯】让人才从“贵漂”到“贵定” 赋能新型城镇化发展
- 荣耀X50i手机发布:1499元起
- 移植头发技术是哪种技术_移植头发技术是哪种
- 加拿大宣布对乌克兰新一轮军事援助计划-环球即时
- 沈阳博物馆寄存行李可以第二天取吗?
-
女子在张杰演唱会跟唱 结果录的全是自己声音 网友:580 的票自己唱了 400 世界时快讯
4月1日-4月2日,2023张杰未·LIVE—「曜·北斗」巡回演唱会广州站,在广东奥体中心体育场举行,价格280元-1680元
-
一头接农场,一头接餐桌,湖北农发集团成立云食仓供应链公司
一头接农场,一头接餐桌,湖北农发集团成立云食仓供应链公司---4月21日,湖北农业发展集团举办“湖北农发云食仓供应链公司品牌推介暨项目签约
-
焦点短讯!朱小贞哥哥发文回应_朱小贞
1、总感觉她有种不食人间烟火的好,或许真是命该如此吧!不然好歹也是从底层打拼出来的,按道理看人比较准。2、也不会请一个这
-
博爱县许良镇:人居环境整治工作再掀新热潮|速看料
近期,焦作市博爱县许良镇以开展乡村建设示范村活动为契机,坚持“先易后难、循序渐进”的工作思路,着力加强“十乱整治”,推动“空心村”治
X 关闭
X 关闭