给出以下伪代码:
func main() {
go runFuncOne()
}
func runFuncOne() bool {
runFuncTwo()
return true
}
func runFuncTwo() bool {
// Do some heavy work
return true
}
runFuncTwo
只会阻塞runFuncOne
(调用goroutine)还是会阻塞runFuncTwo
,因为它本身并不作为goroutine运行吗?我的假设是
main()
将打开一个线程,然后main()
和runFuncOne()
将在其中运行。然后在runFuncTwo()
内执行的任何工作只会阻止runFuncTwo()
的此实例吗? 最佳答案
runFuncTwo仅阻止runFuncOne,因为它们都在单独的Go例程中运行。
请注意,尽管main()将因此继续并退出,从而导致程序退出。为避免此问题以及所有runFuncTwo完成,应使用sync.WaitGroup。