taskgroup
golang并發執行多任務,并聚合多任務結果。
使用文檔
、 項目github
使用: go get github.com/mlee-msl/taskgroup
功能特點
- 并發安全的執行多個任務
- 將多個任務的結果進行聚合
- 通過扇出/扇入模式,結合線程安全
channel
實現高效協程間通信 - 多任務復用(共享)同一協程,避免了協程頻繁創建或銷毀的開銷
early-return
,當出現必要成功的任務失敗時,停止執行所有goroutine
后續的其他任務
對比errgroup
- errgroup 沒有任務添加階段,直接會使用協程執行指定的任務
可通過限制協程數量上限,控制并發量(指定
buffer size
的channel
實現),當協程數達到上限時,需要等待現有任務執行結束,然后開啟新的協程,會增加協程創建或銷毀的成本給errgroup項目提PR
- errgroup可支持帶有取消Context的模式,但實際上,該種模式下仍需要所有執行任務的
goroutine
執行完畢(每一個任務都會有新的goroutine
)
關于
- 歡迎大家對
項目github
進行star
、fork
- 歡迎大家積極共建,提一切可能的
Issues
,進行PR(MR)