推荐理由
协程泄漏引发的血案,想必各位gopher都经历过,通过协程池限制goroutine数是一个有效避免泄漏的手段。今天介绍的ants库是公认且优秀的协程池实现。ants Github主页上的简介:
ants是一个高性能的 goroutine 池,实现了对大规模 goroutine 的调度管理,允许使用者在开发并发程序的时候限制 goroutine 数量,复用资源,达到更高效执行任务的效果。
功能介绍
自动调度海量的 goroutines,复用 goroutines
定期清理过期的 goroutines,进一步节省资源
提供了大量有用的接口:任务提交、获取运行中的 goroutine 数量、动态调整 Pool 大小、释放 Pool、重启 Pool
优雅处理 panic,防止程序崩溃
资源复用,极大节省内存使用量;在大规模批量并发任务场景下比原生 goroutine 并发具有更高的性能
非阻塞机制
使用指南
目前测试通过的 Golang 版本:
v1.8.x** ~ v1.16.x** 的所有版本。
安装
go get -u github.com/panjf2000/ants
使用 v2 版本 (开启 GO111MODULE=