【发布时间】:2018-04-18 02:43:43
【问题描述】:
我有一个要求,即单个进程应该并行处理多个作业。这些作业中的每一个都应定期运行(例如,每 10 秒)。主线程也需要观察停止信号,当收到时应该停止所有线程并退出。
以下是我处理此要求的方法。
主线程将为每个作业创建线程并等待停止信号。每个线程负责处理循环机制。当主线程接收到停止信号时,它会向线程发送信号停止。
在这种机制下,踏板将一直运行。所以我在想可能有更好的方法来处理这个问题。 也许就像,主线程将跟踪每个作业应该何时执行,并在需要时启动线程。线程将执行一些操作并在完成时退出。在这种情况下,线程不会一直运行。
我目前不知道如何实施替代方法。所以,我想知道以上哪一个可能是好方法?另外,如果有其他更好的选择,请提出建议。
编辑 [3 月 19 日]:
也许我一开始就应该提到这一点,但这里是这样。
假设如果我有 2 个作业,则不需要同时运行这两个作业。例如,作业 1 应每 10 秒运行一次,作业 2 应每 20 秒运行一次。
此外,如果 Job 本身需要更多时间,则必须有某种机制来正确识别和处理它。也许跳过执行或等待上一个作业完成然后重新开始。目前,这一项的要求并不明确。但是,我应该能够识别和处理这种情况。
【问题讨论】:
标签: c++ multithreading timer