您当前的位置: 首页 > 热点 > > 内容页

go的数据类型-其他数据类型-channel(二)

来源:腾讯云 2023-04-22 10:50:21


(资料图片仅供参考)

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之间的通信和同步,从而使程序变得简单和高效。

上一篇 下一篇
x
推荐阅读 更多
go的数据类型-其他数据类型-channel(二)

以下是一个使用Channel的示例程序,该程序创建了两个Goroutine,并使用Channel在它们之间进行通信和同步。

2023-04-22
歌尔股份姜滨:砍单产品Q1仍未恢复生产 与该客户其他业务正常开展

4月21日电,在今日举办的歌尔股份业绩会上,歌尔股份董事长姜滨在回复记者提问时表示:“公司2022年四季度

2023-04-22
要赚钱,记住这个黄金圈!-天天简讯

过去有个很流行的房产投资理论对于圆环套圆环结构的单中心城市,比如北京、上海、成都、武汉、西安、郑州、

2023-04-22
大龙地产:2023年实现收入8.67亿元

大龙地产:2023年实现收入8 67亿元-4月21日,大龙地产发布2022年年度报告。

2023-04-22
如何清洁咖啡机上的霉菌 要闻速递

污染物会影响咖啡的味道。如果您对咖啡机发霉的可能性考虑太多,您将永远不会再真正享受早晨的一杯咖啡。不

2023-04-22
长安鑫益增强混合C基金暂停大额申购

4月21日,长安鑫益增强混合C基金(002147)公告称该基金暂停大额申购,单日购买上限为100万元,暂停原因:

2023-04-22
生长纹如何消除_怎么去除生长纹|时快讯

欢迎观看本篇文章,小勉来为大家解答以上问题。生长纹如何消除,怎么去除生长纹很多人还不知道,现在让我们

2023-04-22
天天观焦点:最后一代黄金球员告别,他们今年都远离了中超

最后一代黄金球员告别,他们今年都远离了中超

2023-04-22
屡战屡败的快时尚生意,怎么就被电商平台盯上了?_世界最新

一溃千里,是海外快时尚品牌近些年在国内的真实写照。在全球三大快时尚品牌中,ZARA、H&M都在国内持续关店

2023-04-22
世界热点!师德应是从教的第一门槛

近日,教育部印发《关于推开教职员工准入查询工作的通知》,就依法推开准入查询制度,严格落实从业禁止制度

2023-04-22