主协程和子协程的并发执行 - Go语言中文社区

主协程和子协程的并发执行


package main

import (
    "fmt"
    "time"
)

func main() {
    names := []string{"Eric", "Harry", "Robert", "Jim", "Mark"}
    for _, name := range names {
        // 主协程和子协程中的代码是并发执行的,但是子协程的执行需要一定的初始化时间,
        // 子协程在打印输出的时候,主协程已经遍历到切片中的最后几个值了(具有不确定性)
        go func() {
            fmt.Printf("Hello,%s!n", name)
        }()
    }

    //如果此行注释掉,主协程结束且子协程无任何打印输出
    time.Sleep(time.Millisecond)
}

/*
输出结果如下Hello,Mark!
Hello,Mark!
Hello,Jim!
Hello,Mark!
Hello,Mark!
*/





版权声明:本文来源简书,感谢博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://www.jianshu.com/p/896cbe74af99
站方申明:本站部分内容来自社区用户分享,若涉及侵权,请联系站方删除。
  • 发表于 2020-01-12 13:09:55
  • 阅读 ( 1131 )
  • 分类:

0 条评论

请先 登录 后评论

官方社群

GO教程

推荐文章

猜你喜欢