在一个程序中,有两种执行关系,一种是a执行完了才能执行b,也就是串行;另外一种是a和b没有依赖关系,a和b可以同时执行,也就是并行。
如上图所示,这是一个有向无环图,箭头表示事件之间的驱动依赖关系。比如A和B事件执行完了才可以执行F事件,F和G事件执行完了才可以执行I事件。A、B、C、D、E、K事件可以同时执行。
我在工作中遇到的问题就是把可以一起执行的事件名字放到一起,以便后面可以一起调度,这个时候就需要拓扑排序算法啦。拓扑排序的流程如下:
step1:先统计所有节点的入度。(对于有向图:节点(顶点)的入度是指进入该节点(顶点)的边的条数;节点(顶点)的出度是指从该节点(顶点)出发的边的条数。)