Given the following pseudo-code:
func main() {
go runFuncOne()
}
func runFuncOne() bool {
runFuncTwo()
return true
}
func runFuncTwo() bool {
// Do some heavy work
return true
}
Would runFuncTwo only be blocking to runFuncOne (the calling goroutine) or would runFuncTwo also block main() as it is not itself running as a goroutine?
My assumption is that main() will open a thread within which runFuncOne() and runFuncTwo() will then operate. Any work performed within runFuncTwo() will then only block this instance of runFuncOne()?
runFuncTwo blocks runFuncOne only, as both are running in a separate Go routine.
Note though that main() will therefore continue and exit, causing the program to exit. To avoid this and all runFuncTwo to complete, you should use a sync.WaitGroup.