taskgroup
golang并发执行多任务(网络i/o、磁盘i/o、内存i/o等),并聚合收集多任务执行结果与执行状态(如任务组执行失败,返回首个必要成功任务的错误信息, 且会立即停止后续任务的运行)。
使用文档
、 项目github
使用: go get github.com/mlee-msl/taskgroup
功能特点
- 并发安全的执行多个任务
- 将多个任务的执行结果与执行状态进行聚合
- 通过扇出/扇入模式,结合线程安全
channel
实现高效协程间通信 - 多任务复用(共享)同一协程,避免了因协程频繁创建或销毁带来的开销,一定程度上也减少了上下文切换(特别是,内核线程与用户协程间的切换)的频次
early-return
,当出现必要成功的任务失败时,停止执行所有goroutine
后续的其他任务