有效利用资源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 中。资源