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

taskgroup

golang并发执行多任务,并聚合多任务结果。
使用文档项目github

使用: go get github.com/mlee-msl/taskgroup

功能特点

  • 并发安全的执行多个任务
  • 将多个任务的结果进行聚合
  • 通过扇出/扇入模式,结合线程安全channel实现高效协程间通信
  • 多任务复用(共享)同一协程,避免了协程频繁创建或销毁的开销
  • early-return,当出现必要成功的任务失败时,停止执行所有goroutine后续的其他任务

对比errgroup

  • errgroup 没有任务添加阶段,直接会使用协程执行指定的任务

    可通过限制协程数量上限,控制并发量(指定buffer sizechannel实现),当协程数达到上限时,需要等待现有任务执行结束,然后开启新的协程,会增加协程创建或销毁的成本

    errgroup项目提PR

  • errgroup可支持带有取消Context的模式,但实际上,该种模式下仍需要所有执行任务的goroutine执行完毕(每一个任务都会有新的goroutine

关于

  • 欢迎大家对 项目github 进行starfork
  • 欢迎大家积极共建,提一切可能的Issues,进行PR(MR)
本作品采用《CC 协议》,转载必须注明作者和本文链接
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!