layout | title | tags |
---|---|---|
post |
ants 高性能 goroutine 池 |
Go |
阅读源码是一个我比较认可的快速提升编程能力的方法,所以一直想推荐一些开源优秀的 Go 项目,希望大家能够通过源码的学习不断提供自己。今天就尝试给大家分享一个,不知道大家会不会喜欢?
ants
是一个高性能的 goroutine 池,实现了对大规模 goroutine 的调度管理、goroutine 复用,允许使用者在开发并发程序的时候限制 goroutine 数量,复用资源,达到更高效执行任务的效果。提供了如下功能:
- 自动调度海量的 goroutines,复用 goroutines
- 定期清理过期的 goroutines,进一步节省资源
- 提供了大量有用的接口:任务提交、获取运行中的 goroutine 数量、动态调整 Pool 大小、释放 Pool、重启 Pool
- 优雅处理 panic,防止程序崩溃
- 资源复用,极大节省内存使用量;在大规模批量并发任务场景下比原生 goroutine 并发具有更高的性能
- 非阻塞机制
为什么要推荐这个项目呢?在我阅读完项目的代码后,大概总结有如下几点:
-
代码量少,差不多 1000 行不到
-
项目有良好的测试,尤其是性能测试做的很全面,作者也通过图示的方式详细的介绍了测试的过程
-
接口定义清晰
-
使用文档清晰全面,同时还有运行时流程图
如下是使用ants
的吞吐性能相较于原生 goroutine 可以保持在 2-6 倍的性能压制,而内存消耗则可以达到 10-20 倍的节省优势。
如此优秀的一个项目,值得大家阅读学习,更多项目的介绍和使用说明参考如下链接。