goroutine 执行时候的顺序

userzhao · 2017-08-15 08:44:01 · 2261 次点击 · 大约8小时之前 开始浏览    置顶
这是一个创建于 2017-08-15 08:44:01 的主题,其中的信息可能已经有所发展或是发生改变。

func main() {
    runtime.GOMAXPROCS(1)

    var wg sync.WaitGroup
    wg.Add(2)

    go func() {
        defer wg.Done()
        fmt.Println("a")
    }()

    go func() {
        defer wg.Done()
        fmt.Println("b")
    }()
    wg.Wait()
}

为什么总是先打印b后打印a, groutine首次执行有顺序吗?


有疑问加站长微信联系(非本文作者)

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

2261 次点击  
加入收藏 微博
2 回复  |  直到 2017-08-15 09:33:41
channel
channel · #1 · 8年之前

为什么非得做这样的试验呢?没啥意义,而且结果跟编译器实现有关!

marlonche
marlonche · #2 · 8年之前

确实没必要纠结,如果在乎顺序就明确用channel同步,不在乎顺序管它谁先执行

添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传