我如何等待触发器或检查作业的作业完成情况?

How can I wait for a trigger or check for a job completion from a job?

我有 3 份工作(工作 A、工作 B 和工作 C)。作业 A 触发作业 C。我希望作业 C 等待作业 B 完成并 运行 完成作业。

我们可以等待作业完成吗?

我已阅读有关投票的内容。它有什么作用 ?投票可以帮助我吗?

我假设轮询是指 "busy-waiting"。这可以帮助你,但它通常被认为是一个低效的解决方案。

但是什么是轮询? (视为忙等)

类比

好吧,假设您从亚马逊或其他在线商店购买了一件商品。轮询是当你坐在家里,每 5 秒打电话给亚马逊,了解你的产品是否已经到达。

正式定义

你可以检查更正式的definition on the wiki。引用:

Polling is sometimes used synonymously with busy-wait polling. In this situation, when an I/O operation is required, the computer does nothing other than check the status of the I/O device until it is ready, at which point the device is accessed. In other words, the computer waits until the device is ready. Polling also refers to the situation where a device is repeatedly checked for readiness, and if it is not, the computer returns to a different task. Although not as wasteful of CPU cycles as busy waiting, this is generally not as efficient as the alternative to polling, interrupt-driven I/O.

改进方法

所以,polling as busy waiting 就是你在家等着送货员,每5秒给他打电话,看看他的状态。如果您有工作或家务要做,这就是在浪费您的时间。您可以通过每 5 秒给他打电话来缓解这种情况,但您可以做一些家务,而不是坐在那里等待再次给他打电话。这样你就可以做一些工作,打电话给那个人,然后回来。每五秒一次。

虽然这种替代方案比真正的忙等待要好,但每 5 秒就中断您的活动以检查送货员的情况仍然很麻烦。

备选

这里真正的选择是,正如 wiki 解释的那样,中断驱动的事件。继续我的类比,中断驱动的事件意味着你在网上买了东西,然后你去上班、上学或做家务。因为你有手机,快递小哥也有你的号码,他一到就给你打电话,你就可以来取东西了。

这里棘手的部分是确保您 手机 的编码正确,这意味着您准备工作 A、B 和 C 以被事件打断并做出相应的响应。根据情况和您使用的工具,这可能不是微不足道的。

要获得更具体的答案,我们需要知道您使用的技术以及您对工作的控制程度。

好了,就到这里,希望我的类比能帮助大家理解概念!