編碼時冒出一個問題:在一個協程內部,再創建一個或多個協程,是否會產生依賴關系?
做了一個小實驗,這里隨筆記錄一下經過,備注后續深入研究。
test代碼:
package main
import (
"fmt"
"time"
)
func main() {
go func() {
fmt.Println("father alive")
go func() {
time.Sleep(time.Second * 2)
fmt.Println("child alive")
}()
defer fmt.Println("father dead")
return
}()
time.Sleep(time.Second * 3)
}
運行結果:

可以得出結論:不同於linux里的進程依賴,golang里,協程都是互相獨立的,沒有依賴(父子)關系。main函數本身也運行在一個goroutine中,main是所有協程的被依賴者,這里是個特例。
