H5W3
当前位置:H5W3 > 其他技术问题 > 正文

为什么go中的main执行完了 协程还有输出,是因为stdout吗

main

func main() {
    for i:=0; i<=5;i++ {
        go func(i int) {
            fmt.Println(i)
        }(i)
    }
    fmt.Println("执行完成")
}

输出

0
2
5
4
执行完成
3

执行完成如果输出了,主进程不应该就结束了,为什么3会在“执行完成”后面输出。跟stdout有什么关系吗,有的话请大家帮忙解答下。

回答:

mian.mian结束了,但是runtime.main没有结束。

runtime.goexit => runtime.main => mian.mian

回答:

执行完成如果输出了,主进程应该就即将结束了

程序不会突然死掉的,最后会有一些清理的活。这个时间不会太长,不过你的协程输出也用不了多长时间。

本文地址:H5W3 » 为什么go中的main执行完了 协程还有输出,是因为stdout吗

评论 0

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址