(资料图)
以下是一个使用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(二) 环球时快讯
【环球新要闻】花茶有哪些品种和图片_花茶有哪些品种
当前快看:海口琼山区开展“关爱儿童 护苗成长”系列主题活动[图]
世界报道:越秀交通基建(01052.HK)发行8亿元超短期融资券
全球观点:樊振东爆冷出局!孙颖莎+陈梦过关,国乒包揽WTT澳门站女单4强,王楚钦险胜
人际沟通的意义与作用有哪些_人际沟通的意义与作用
北京市成立“4·18”火灾事故调查组
刹车泵能修吗_刹车分泵是什么
挪威财富基金副首席执行官TROND GRANDE:银行问题更多是由流动性导致的
一季度初战告捷!富国科技战队划出哪些投资“重点”?
大连区域金融中心如何发展?刘国宏:围绕大连商品交易市场,大力布局特色金融与财富管理
【全球快播报】视频|“家门口”约会“国色天香”
天天最资讯丨潮人盂兰胜会_关于潮人盂兰胜会介绍
成渝协同 共话学前教育高质量发展新思考 全球快资讯
环球速读:4月21日基金净值:交银瑞和三年持有期混合最新净值1.0058,跌1.29%
拉花元宝的叠法_元宝的叠法
天天观焦点:上海车展开幕在即,各大车企及相关参展企业将举行150场发布会
三国志战略版暗藏玄机给谁用(三国志战略版秘策是什么)
e点贷贷款逾期会影响征信吗?|热头条
中国经济有信心有能力行稳致远-动态焦点
天新药业:2022年归母净利同比降16.37%至6.22亿元 拟10派7.1元 维生素产品量价齐跌_环球观天下
当前头条:宽宽的什么(宽宽的词语搭配)
今日谷雨 | 冷空气来袭,明日河南气温急转直下|今日最新
机械工业信息研究院副院长石勇:我国中小企业数字化转型尚处初期,存在三大痛点
平均净资产的计算公式_平均净资产怎么算 净资产应该指的是什么
尼康拍人像怎么样_尼康拍人像最好的镜头 当前热文
心律失常的常见症状及中医药治疗的独特优势
即时焦点:北京国安与广州恒大半决赛的第一回合比分是0比0
日本温室气体排放量近8年来再次出现增长
新宙邦4月21日快速回调|聚焦