grpool
Go语言中的goroutine
虽然相对于系统线程来说比较轻量级(初始栈大小仅2KB
),但是在高并发量下的goroutine
频繁创建和销毁对于性能损耗以及GC
来说压力也不小。充分将goroutine
复用,减少goroutine
的创建/销毁的性能损耗,这便是grpool
对goroutine
进行池化封装的目的。例如,针对于100W
个执行任务,使用goroutine
的话需要不停创建并销毁100W
个goroutine
,而使用grpool
也许底层只需要几万个goroutine
便能充分复用地执行完成所有任务。
...
同时,为便于使用,grpool
包提供了默认的goroutine
池,默认的池对象不限制goroutine
数量,直接通过grpool.Add
即可往默认的池中添加任务,任务参数必须是一个 func()
类型的函数/方法。
使用示例
1、使用默认的goroutine池,限制100个工作goroutine执行1000个任务
...