golang 中多个协程池如何优雅退出

假设有三个协程池(A,B,C), 三个分别处理不一样的业务且每个协程池中的 worker 数量不一致

当前数据流向为 A => B => C,任务在任一协程池中都有出现 err 导致该任务跳过的可能

在如下两种情况下:

  • 进入 A 协程 100 个任务,任务不会继续向下拆分,最后从 C 出来最多也就是 100 个

  • 进入 A 协程 100 个任务,后续每个协程池中都会继续拆分任务,比如转到 B 就是 500 个,继续转到 C 就是 1W 个

    最后在主程序中,针对上述两种情况,有没有优雅的办法知道任务已经全部完成且让主程序退出

讨论数量: 1

试试sync包的WaitGroup

2年前 评论

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