Go 语言的 goroutine 池
英文 | 中文
📖 简介
ants
🚀 功能:
- 自动调度海量的 goroutines,复用 goroutines
- 定期清理过期的 goroutines,进一步节省资源
- 提供了大量有用的接口:任务提交、获取运行中的 goroutine 数量、动态调整 Pool 大小、释放 Pool、重启 Pool
- 优雅处理 panic,防止程序崩溃
- 资源复用,极大节省内存使用量;在大规模批量并发任务场景下比原生 goroutine 并发具有更高的性能
- 非阻塞机制
ants
流程图
动态图
🧰 安装
ants
ants
🛠 使用
ants
Pool 配置
NewPoolNewPoolWithFuncants.Options
自定义池
antsNewPool
任务提交
ants.Submit(func())
动态调整 goroutine 池容量
Tune(int)
该方法是线程安全的。
预先分配 goroutine 队列内存
ants
释放 Pool
重启 Pool
⚙️ 关于任务执行顺序
antsants
🧲 Benchmarks
上图中的前两个 benchmark 测试结果是基于100w 任务量的条件,剩下的几个是基于 1000w 任务量的测试结果,`ants` 的默认池容量是 5w。ants
Benchmarks with Pool
antsantsants
Benchmarks with PoolWithFunc
PoolWithFuncPoolantsantsantsants
吞吐量测试(适用于那种只管提交异步任务而无须关心结果的场景)
10w 任务量
100w 任务量
1000w 任务量
📊 性能小结
ants
👏 贡献者
ants
📄 证书
ants
🖥 用户案例
商业公司
ants
开源软件
所有案例:
ants
🔋 JetBrains 开源证书支持
ants
💰 支持
如果有意向,可以通过每个月定量的少许捐赠来支持这个项目。
💎 赞助
每月定量捐赠 10 刀即可成为本项目的赞助者,届时您的 logo 或者 link 可以展示在本项目的 README 上。
☕️ 打赏
当您通过以下方式进行捐赠时,请务必留下姓名、GitHub 账号或其他社交媒体账号,以便我将其添加到捐赠者名单中,以表谢意。
资助者
🔋 赞助商