gpt4 book ai didi

go - 为什么在主goroutine终止后subgoroutine可以运行?

转载 作者:行者123 更新时间:2023-12-01 21:17:32 29 4
gpt4 key购买 nike

为什么gogoroutine在主goroutine终止后可以运行?
这是代码


package main

import (
"fmt"
"log"
"time"
)


func main() {
ch := make(chan int)
log.Println("===========")
go func() {
log.Println("doing in sub goroutine")
ch <- 1
log.Println("done in sub goroutine")
}()

// mock slowly proceedings
time.Sleep(1 * time.Second)

log.Println("doing in main goroutine")
fmt.Println("x in ch is:", <-ch)
log.Println("done in main goroutine")



// output:
// 2020/07/04 16:26:35 doing in sub goroutine
// 2020/07/04 16:26:36 doing in main goroutine
// x in ch is: 1
// 2020/07/04 16:26:36 done in main goroutine
// 2020/07/04 16:26:36 done in sub goroutine (should not be output)

}
当subgoroutine在主goroutine终端之后可以运行时,以下输出很奇怪。
//2020/07/04 16:26:36在主goroutine中完成
//在子goroutine中完成2020/07/04 16:26:36(不应输出)

最佳答案

打印日志消息后,主goroutine仍在运行。另一个goroutine仍然可以运行,直到主函数返回为止,此后再运行一点,直到运行库完成其清理为止。

关于go - 为什么在主goroutine终止后subgoroutine可以运行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62732041/

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