golang 多个routine之间的同步

golang 多个routine之间的同步,第1张

概述本文以一个例子的方式介绍channel在同步中的使用。 下面的例子中,主task首先阻塞,直到两个task完成后,再继续执行。 package mainimport ( "log" "time")func main() { ch := make(chan int) go task1(ch) go t

本文以一个例子的方式介绍channel在同步中的使用。

下面的例子中,主task首先阻塞,直到两个task完成后,再继续执行。

package mainimport (        "log"        "time")func main() {        ch := make(chan int)        go task1(ch)        go task2(ch)        for i:=0; i<2; i++ {                v := <-ch                log.Println("one task done:",v)        }        log.Println("All task done")}func task1(c chan int) {        time.Sleep(1*time.Second)        c <- 1}func task2(c chan int) {        time.Sleep(10*time.Second)        c <- 2}

output:

2018/02/03 22:18:07 one task done: 1
2018/02/03 22:18:16 one task done: 2
2018/02/03 22:18:16 All task done

执行过程如下:
主task阻塞;
task1等待1秒后,完成;
task2等待10秒后,完成;

最后主task,继续执行到完成;

总结

以上是内存溢出为你收集整理的golang 多个routine之间的同步全部内容,希望文章能够帮你解决golang 多个routine之间的同步所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1271747.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-08
下一篇 2022-06-08

发表评论

登录后才能评论

评论列表(0条)

保存