我的应用程序中有一个函数,它执行一些对应用程序的其余部分很重要的操作,但随后必须执行一系列可以在 go 例程中并行完成的操作。
func A() {
// some code
go func() {
// parallel code
}()
}
现在我的问题很简单。我可以相信并行函数在“父”函数(在本例中为函数 A)结束后继续完成吗?或者如果 A 在并行功能完成之前结束(很可能是这种情况),它会被取消吗?
我希望不必使用通道来表示 go 例程的结束,因为这有点违背了并行执行此操作的目的。
启动的goroutine在
A()
返回后会继续运行,事实上,你甚至无法强制一个goroutine停止。如果 你的应用程序结束(main()
返回).,goroutines 被终止的唯一原因
另请注意,goroutine 不一定/自动意味着并行执行,仅意味着并发,请参阅并发不是并行。