(资料图)
以下是一个使用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(二)_环球新要闻
宝马mini被指区别对待中国和外国访客?工作人员回应:事发昨天下午,后续总部会回应此事 焦点热文
有哪些好用的股票小工具?炒股必备的几个工具介绍-全球今日报
矫哲
塑料夹子图片_塑料夹子-当前讯息
最常见的风险定性分析方法(最常见的风险定性分析方法是)|每日观点
【全球播资讯】股票行情快报:六国化工(600470)4月21日主力资金净卖出961.39万元
漳州龙文增设3个社区 调整2个社区管辖规模
贵州黔西:春日乌江景如画
【环球新视野】特斯拉自动驾驶团队失去一重要人物,Autopilot 项目产品总监离职
天天快资讯丨江丰电子(300666.SZ):146.55万股限制性股票将解除限售、上市流通
每日速递:三月三 乐翻天丨2023“壮族三月三”主题曲《尼的呀》邀你唱
帆布是什么面料_帆布
入党发展对象到预备党员要多久_发展对象到预备党员要多久|今日视点
考虑到泳装季节制作沙拉 当前资讯
要闻:珍酒李渡:白酒光环无法普照
天天新资讯:无固定期限劳动关系离职补偿金
秦刚谈中国式现代化对全球经济复苏的作用 天天新动态
多地兜底:发生亏损 补贴20%-天天热文
世界快看点丨2023年荥阳4月22日限行吗?附五一限行规定
美股开盘:三大股指集体低开,特斯拉跌超7%
世界观察:海南自贸港航运政策利好释放 企业加大投资洋浦
世界热点评!02飞行员皮夹克冬款和春秋款一样厚吗_02式飞行员皮夹克
意甲女排1/4决赛斯坎迪奇双杀贝加莫 朱婷姚迪首战意甲晋级4强
全球速讯:立案庭诉前调解工作总结(优选6篇)
今日热门!一季度股基仓位提升 百亿基金持仓稳定
年内20地更新上市企业名册 近百家公司募资逾千亿元|当前观察
全球动态:疾恶如仇中的疾是什么意思 疾苦的疾是什么意思
针对RedisTemplate分布式锁实现WatchDog
天天动态:2023年百色市职工运动会开幕
当前快报:哪些牛肉块可以变成炖肉?
打完玻尿酸后还可以脂肪填充吗 世界动态
南通报业大厦水空调系统维保工程项目(二次)竞争性磋商公告
【原唱歌曲】我们是绿色轻骑兵
当前快播:北京西城区开展消防和反恐防暴演练
LPR连续8个月“原地踏步” 二季度实体经济融资成本仍有望保持低位
相关新闻