DSAppTeam/Anchors

循环依赖是怎么避免的?

forever4313 opened this issue · 3 comments

看到有这么一段注释

 * project 的构建内部,避免了回环的发生。
 * 当出现project 内 task 循环依赖是,循环依赖会自动断开。

是怎么做到依赖自动断开的呢?
顺便想问一下,
如果使用如下build构建
builder1.add(TASK_11).dependOn(TASK_10);
builder1.add(TASK_12).dependOn(TASK_11);
builder1.add(TASK_13).dependOn(TASK_12);

从startTask就只能运行 START->FINISH 两个task

针对你的例子,因为你丢失了 TASK_10,所以 project1中 startTask任务结束之后获取 TASK_10,发现task对象不存在则丢弃。
真正检测回环的逻辑在 AnchorsRuntime#getDependenciesMaxDepth, 存在死循环的时候框架会抛出异常,这对程序设计是合理的。

哦,明白了,实际上,Add才是真正的在图中增加一个task,dependon只是为了增加对应的依赖关系

哦,明白了,实际上,Add才是真正的在图中增加一个task,dependon只是为了增加对应的依赖关系

嗯嗯对的