golang 協程嵌套,會產生依賴關系(父子關系)么?


編碼時冒出一個問題:在一個協程內部,再創建一個或多個協程,是否會產生依賴關系?

做了一個小實驗,這里隨筆記錄一下經過,備注后續深入研究。

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是所有協程的被依賴者,這里是個特例。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM