文章482
标签257
分类63
控制Goroutine数量的方法

控制Goroutine数量的方法

在我们写代码的时候,经常会有批量创建任务并等待返回的场景;此时使用生产消费者并发的提交任务来代替for循环逐个执行任务能够大大提高代码效率;

然而不加限制的创建Goroutine也是会有内存溢出、CPU切换过多等资源浪费的情况;

本文讲述了Go中一些常用的控制Goroutine数量的方法;

源代码:


使用Uber开源的goleak库进行goroutine泄露检测

使用Uber开源的goleak库进行goroutine泄露检测

goroutine 作为 golang 并发实现的核心组成部分,非常容易上手使用,但却很难驾驭得好。我们经常会遭遇各种形式的 goroutine 泄漏,这些泄漏的 goroutine 会一直存活直到进程终结。它们的占用的栈内存一直无法释放、关联的堆内存也不能被GC清理,系统的可用内存会随泄漏 goroutine 的增多越来越少,直至崩溃!

Uber开源了goleak库可以帮助我们检测代码中可能存在的goroutine泄露问题;

源代码:


Go创建Goroutine时显式调用时的坑

Go创建Goroutine时显式调用时的坑