有效利用資源git
雖然在Golang程序中,使用go func
的方式開啓一個goroutine
協程是很是輕量級的操做。可是,徹底無論理的任意建立,會形成不少資源的浪費。雖然golang自己提供了GC功能,可是GC釋放是須要時機的。經過更加合理的建立goroutine
對象能夠更加有效的利用系統資源。github
貼一個常見的資源問題:golang
for { go func(){ fmt.Println("xxx") }() }
這段代碼可能形成兩類對象資源的浪費:函數
goroutine
資源的浪費以上代碼,讀者能夠長時間運行看看程序對於系統資源的佔用狀況。code
上下文控制協程
隨着程序複雜度的上升,goroutine
一般也會隨之增加。如何控制這些新建立的goroutine
呢。這就須要經過context.Context
上下文對象,進行父子級傳遞,完成父子goroutine
的控制。對象
Goroutine
的管理除了以上兩點緣由以外,參考項目 github.com/x-mod/routine 中。資源