go的数据类型-其他数据类型-channel(二)
腾讯云 2023-04-22 17:05:47


(资料图片仅供参考)

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

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

2023-04-22

微头条丨工业题材电影《钢铁意志》专家研讨会在京举行

2023-04-22

遵义交友服务_遵义交友_全球关注

2023-04-22

北方将现大范围雨雪局地大暴雪 山西陕西局地或冷到破纪录

2023-04-22

当前信息:华尔街大鳄彼得·希夫:美元将迎致命一击 “淘金热”时刻准备着!

2023-04-22

婴儿脑膜炎的早期症状鉴别_新生儿脑膜炎的早期症状 世界今头条

2023-04-22

6道刮油菜,营养丰富,蛋白质含量高,消脂刮油,轻轻松松过夏|当前关注

2023-04-22

环球简讯:融资成本稳中有降信贷结构持续优化 不存在长期通缩或通胀基础

2023-04-22

双争进行时·河北荣光 | 惊心动魄!秦皇岛市民合力托举40多分钟,成功救下“悬空”女童

2023-04-22

【天天新视野】普法宣传进企业 法治护航促发展

2023-04-22

上海车展亮相的迈巴赫S,带来了哪些惊喜呢?

2023-04-22

杰尼龟历险记官网在哪下载 最新官方下载安装地址

2023-04-22

抗过敏牙膏哪个牌子的效果好 抗过敏

2023-04-22

今日报丨沈阳顺丰快递电话号码上门取件(沈阳顺丰快递电话号码)

2023-04-22

王林虎:RAV4荣放/卡罗拉将全方位升级

2023-04-22

当前消息!再次表决心!艾克森:希望国家队能够继续征召我

2023-04-22

快播:凌志软件:4月21日融资买入494.34万元,融资融券余额8401.75万元

2023-04-22

手机进入recovery模式怎样刷机_手机进入recovery模式

2023-04-22

天天资讯:汉中公安:“严”字当头扎实推进春季治安清查整治专项行动

2023-04-22

世界看点:孔令谦谈会吃才健康

2023-04-22