0

假设我有两个预定进程:A 和 B。

鉴于 B 不应该在 A 完成之前运行,我该如何优雅地强制执行这种依赖关系?

已考虑的方法:

  1. 完成后有一个时间表 B。如果由于某种原因 A 失败,这具有 B 永远不会被安排的缺点。

  2. 当 B 运行时,让它 ping A 以查看后者是否已完成。如何实现这一点(网络、文件、数据库记录、消息队列)可能会很混乱,并且引入第三个依赖项会有问题。

  3. 将 A 和 B 合并为一个进程。这具有将两者紧密结合的缺点,如果需要,很难单独重新运行其中一个或另一个。

想法?

4

2 回答 2

2

您的选项 1 直接回答了您的问题:如果 B 依赖于 A,并且 A 失败,则 A 不调度 B 意味着 B 不会发生。

除非 B 只需要追随 A,否则无论 A 是否成功。

在这种情况下,类似下面的东西(在 bash 中)会起作用:

A && B
于 2008-10-07T15:44:07.703 回答
1

您可以修改第 3 步:创建两个进程以单独运行,然后创建第三个进程来运行其他两个进程。

于 2008-10-07T15:45:06.577 回答