You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Go语言:函数内goroutine在父函数结束后能否执行完毕?

Go goroutine 生命周期问题解答

核心结论

父函数A执行结束后,它启动的goroutine会继续执行至完成,不会因为A的结束被取消。

原因说明

Go语言中,goroutine的生命周期和调用它的父函数完全独立。一旦goroutine被启动,就会由Go运行时调度器接管管理,只要当前Go进程还在运行,这个goroutine就会正常执行自身代码逻辑,直到全部完成。哪怕父函数A已经执行完毕退出,也不会对该goroutine的运行产生影响。

特殊终止情况

只有当整个Go进程退出时(比如main函数执行完毕、程序被外部信号强制终止等),这个goroutine才会被强制中断,无法完成剩余执行。

关于通道的补充

你担心用通道通知goroutine结束会失去并行意义——这点完全无需顾虑,因为这里根本不需要通道来维持goroutine的运行。goroutine本身就会自主执行到完成,除非进程整体退出。

你的代码示例是完全可行的:

func A() {
   // some code
   go func() {
      // parallel code
   }()
}

内容的提问来源于stack exchange,提问作者Ardjay

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.28 13:33:11