golang并发(同步)多任务高性能执行&聚合

walkermli · · 1029 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

# taskgroup *golang*并发执行多任务,并聚合多任务结果。 **[`使用文档`](https://pkg.go.dev/github.com/mlee-msl/taskgroup "欢迎使用,任何意见或建议可联系`2210508401@qq.com`")**、 **[`项目github`](https://github.com/mlee-msl/taskgroup/tree/main "taskgroup")** > **使用:** go get github.com/mlee-msl/taskgroup # 功能特点 - 并发安全的执行多个任务 - 将多个任务的结果进行聚合 - 通过**扇出/扇入**模式,结合线程安全`channel`实现高效协程间通信 - <big>多任务复用(共享)同一协程</big>,避免了协程频繁创建或销毁的开销 - `early-return`,当出现<big><u>必要成功</u></big>的任务失败时,停止执行所有`goroutine`后续的其他任务 # 对比[errgroup](https://pkg.go.dev/golang.org/x/sync/errgroup "errgroup") - **errgroup** 没有任务添加阶段,直接会使用协程执行指定的任务 > 可通过限制协程数量上限,控制并发量(指定`buffer size`的`channel`实现),当协程数达到上限时,需要等待现有任务执行结束,然后开启新的协程,会增加协程创建或销毁的成本 > > > 给[errgroup](https://cs.opensource.google/go/x/sync)项目提PR - **errgroup**可支持带有[取消Context](https://pkg.go.dev/context#WithCancelCause)的模式,但实际上,该种模式下仍需要所有执行任务的`goroutine`执行完毕(每一个任务都会有新的`goroutine`) # 关于 - 欢迎大家对 **[`项目github`](https://github.com/mlee-msl/taskgroup/tree/main "taskgroup")** 进行`star`、`fork` - 欢迎大家积极共建,提一切可能的`Issues`,进行`PR(MR)`

有疑问加站长微信联系(非本文作者))

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

1029 次点击  ∙  1 赞  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传