ants 高性能 goroutine 池

阅读源码是一个我比较认可的快速提升编程能力的方法,所以一直想推荐一些开源优秀的 Go 项目,希望大家能够通过源码的学习不断提供自己。今天就尝试给大家分享一个,不知道大家会不会喜欢?

ants是一个高性能的 goroutine 池,实现了对大规模 goroutine 的调度管理、goroutine 复用,允许使用者在开发并发程序的时候限制 goroutine 数量,复用资源,达到更高效执行任务的效果。提供了如下功能:

  • 自动调度海量的 goroutines,复用 goroutines
  • 定期清理过期的 goroutines,进一步节省资源
  • 提供了大量有用的接口:任务提交、获取运行中的 goroutine 数量、动态调整 Pool 大小、释放 Pool、重启 Pool
  • 优雅处理 panic,防止程序崩溃
  • 资源复用,极大节省内存使用量;在大规模批量并发任务场景下比原生 goroutine 并发具有更高的性能
  • 非阻塞机制

为什么要推荐这个项目呢?在我阅读完项目的代码后,大概总结有如下几点:

  1. 代码量少,差不多 1000 行不到
  2. 项目有良好的测试,尤其是性能测试做的很全面,作者也通过图示的方式详细的介绍了测试的过程
  3. 接口定义清晰

  4. 使用文档清晰全面,同时还有运行时流程图

如下是使用ants的吞吐性能相较于原生 goroutine 可以保持在 2-6 倍的性能压制,而内存消耗则可以达到 10-20 倍的节省优势。

如此优秀的一个项目,值得大家阅读学习,更多项目的介绍和使用说明参考如下链接。

项目链接:https://github.com/panjf2000/ants


更多精彩请扫码关注如下公众号。

Written on March 11, 2020