日期:2023-04-23 21:57:21 来源:腾讯云
(资料图片仅供参考)
以下是一个使用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(二)
世界速读:33名古琴师武当山同奏《高山流水》
世界新资讯:(图表·漫画)[经济]资金支持
“金融支持前海30条”落地成效初显,深港跨境金融服务提质升级|天天热闻
广汽本田越野车型有哪几款_广汽本田越野车型
岩盐芝士奶茶怎么做(岩盐芝士奶茶做法) 天天热门
23沪电力SCP007今日发布发行公告
怀旧版天龙八部天龙怎么打宝石_天龙八部天龙怎么打宝石_天天热议
山东海洋民俗文化游吸引民众
因《地平线 西之绝境》DLC含女同情节 收获大量差评 世界观速讯
怎么改照片大小为厘米_怎么改照片大小
福建重点查处网络直播中虚假或者引人误解的商业宣传行为
“全职儿女”不是啃老,别对年轻人自由择业有偏见|新京报快评 今日精选
今日讯!中国航天育种科研持续推进 助力产业发展
今天,为人民海军点赞!
全球快看:基金一季报披露 明星基金经理调仓路径曝光
上海市第一届职业技能大赛开幕 109个项目吸引了1000多名选手参赛 当前快播
科技创未来 木仓科技携驾考宝典多款产品闪亮交博会
天下|文物回归:最美的重逢
小米5000万投资新设机器人技术公司
用这个简单的食谱做一个三明治蛋糕
“救人要紧!” 郯城大学生,李淑雅,好样的!
【春天里我们这样干⑫】青海,万余干部“扑下身子”助农桑 世界速看
当前关注:11岁女孩玩密室逃脱被惊吓致9级伤残,获赔20余万
安徽省宿州市市场监管局高新区分局开展知识产权进学校活动 动态