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


(相关资料图)

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(二)

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

    来源:腾讯云 23-04-22

    英年早逝 对联_英年早逝悼词对联

    今天小编肥嘟来为大家解答以上的问题。英年早逝对联,英年早逝悼词对联相信很多小伙伴还不知道,现在让我们一起来看看吧!1、父慈子孝儿孙满堂

    来源:科学教育网 23-04-22

    宏碁发布两款新电竞显示器 均为宽屏曲面设计_世界热议

    Acer今天发布了两款新的游戏显示器,分别为NitroXZ452CU和PredatorX34V,均为宽屏曲面显示器。

    来源:PChome 23-04-22

    随时随地玩3A 坐标武汉 这里潮好玩!壹号本掌机成为焦点 全球观天下

    ZOL“潮好玩”嘉年华科技潮玩展今天盛大开幕啦!去年我们和超20万的观众在长沙一同感受科技的乐趣。今年我们转战武汉,与新

    来源:中关村在线 23-04-22

    知名演员关婷娜现身五台山祈福,打扮低调颜值惊艳,40岁越来越美

    4月21日,这两天,知名演员关婷娜频繁营业,分享了自己云南游玩和五台山祈福的视频,从视频不难看出,40岁的关婷娜颜值依旧惊艳,打扮非常低调

    来源:五柳先生 23-04-22
    返回顶部