给出以下伪代码:

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。

07-27 23:17