慢聊Golang协程池Ants实现原理

【慢聊Golang协程池Ants实现原理】大家都知道goroutine 是 Go语言中的轻量级线程实现,由 Go 运行时(runtime)管理,Go 程序会智能地将 goroutine 中的任务合理地分配给每个 CPU 。创建一个goroutine大小大概在2k左右,可以说非常的节省机器资源 。
但是为什么要用池化的方式呢?机器资源总是有限的 , 如果创建了几十万个goroutine , 那么就消耗比较大了,在一些需要对并发资源进行控制、提升性能、控制生命周期的场景中 , 还是需要用到协程池去处理 。
今天就介绍在Github用Go语言实现的有 11.5k?的 Ants 协程池库的实现!

慢聊Golang协程池Ants实现原理

文章插图
图片
初识AntsAnts介绍Go的协程非常轻量 , 但是在超高并发场景,每个请求创建一个协程也是低效的,一个简单的思想就是协程池 。
Ants实现了一个具有固定容量的goroutine池,管理和回收大量goroutine,允许开发人员限制并发程序中的goroutines数量 。
慢聊Golang协程池Ants实现原理

文章插图
图片
Github地址:https://github.com/panjf2000/ants
这是在github上的截图,注意不同版本之间代码实现会略有差异 。
慢聊Golang协程池Ants实现原理

文章插图
图片
特性



    推荐阅读