简单的协程控制,很多人都会使用 sync.WaitGroup 进行多协程的控制。但是 sync.WaitGroup 面对图示的调度控制就显得无能为力了。

但需要在应用开发中实现类似上图的精准调度,就需要借助其它手段了。

上图的协程调度看似复杂,如果仔细分析一下,就会发现单个协程的启动需要等待依赖协程完成才能开始。所以,问题的关键是实现协程间的前置依赖。

那么,这样一个前置依赖该如何实现呢?这里直接贴出我的方案,你也可以想想你要如何实现。

这样一个简单的事件触发器就可以来模拟协程前置依赖。例如,图示中的B1的启动依赖于A1与C1,那么我们的实现代码就可以这样实现: