(资料图)
以下是一个使用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(二) 天天微速讯
腿骨折吃什么恢复快一点_腿骨折吃什么恢复快
关注:国家一级演员宗利群去世 生前曾扮演六十多次彭德怀
天天观速讯丨青岛市委统战部举办2023年“金融惠侨”银企对接会
魏牌蓝山/高山“实力CP”亮相,全面布局大六/七座市场
水产租赁合同范本(3篇)
2023上海车展:迈莎锐星际骑兵亮相 售1388万元 中国仅1台|每日报道
全球热点评!好事达保险的困境(好事达财险)
全球快播:21对话|专访荷兰驻华大使贺伟民:中国经济复苏为中荷合作带来机遇,两国农业、绿色低碳合作空间很大
交通运输部:一季度我国交通运输业多项指标实现正增长
上海启动智能工厂建设系列首场活动,汽车行业智能制造专委会成立-天天观点
成分党必知——冻干粉的正确使用方法|观天下
节约粮食
从娃娃抓起 快播
老鼠最怕什么气味_老鼠最怕什么东西|世界热闻
焦点速讯:红豆沙冰的做法有哪些_怎么自制红豆冰沙
宝马MINI就上海车展“冰淇淋事件”致歉:工作人员失职,将改善管理
全球今日报丨海南离岛免税累计购物金额1850亿元
近悦远来,留“宿”不“迁”:喜见人才苏北“飞”
火灾背后的长峰医院:已连锁近20家 设想覆盖全国 环球观热点
天天通讯!日本防卫省将对陆上自卫队直升机失踪事故原因展开调查
天天热门:德州市制造业数字化转型大会暨“工赋山东”2023年专项行动德州现场会举办
世界消息!大染坊陈寿亭结局_大染坊 中的 ldquo 陈寿亭 rdquo 历史上确有其人吗
杜兰特:我不仅仅是一个得分手 所以我觉得我一直在进化-全球资讯
世界报道:书香浸润校园 屈原管理区教育系统助推“书香屈原”建设
最新消息:歌颂祖国的律诗大全_歌颂祖国的古诗律诗
世界时讯:HUGO BOSS集团中国区董事总经理孙珏:深挖消费升级机会,将持续平衡全渠道增长
今日热议:菜鸟驿站每日工作总结(汇总7篇)
每日动态!转债申购结果:晶科能源转债公布中签率
每日关注!塔克拉玛干到底有多干是什么意思梗
安科瑞(300286):4月20日北向资金增持15.94万股