如何管理 Goroutine

为何须要管理Goroutines

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

相关文章
相关标签/搜索