gpt4 book ai didi

go - 为什么 main goroutine 总是第二个被调用

转载 作者:数据小太阳 更新时间:2023-10-29 03:33:02 25 4
gpt4 key购买 nike

package main
import (
"sync"
"time"
)
func main() {
var wg sync.WaitGroup

wg.Add(1)

go func() { //A
wg.Wait()
println("wait exit")
}()

go func() {
time.Sleep(time.Second)
wg.Done()
}()

wg.Wait()
println("main exit")
}

结果:

wait exit
main exit

为什么main goroutine不先执行println("main exit"), main thread dead然后discard A goroutine?它一直打印,就像结果显示的那样

最佳答案

机会。

语言规范中没有任何内容表明您的“等待退出”应该在“主退出”之前或之后执行。

如果您运行程序的次数足够多,有时“main exit”会先运行。但也可能不是。结果未定义,取决于运行时状态和实现。因此,结果甚至可能在 Go 版本之间发生变化。

关于go - 为什么 main goroutine 总是第二个被调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44657084/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com