【发布时间】:2015-02-02 12:40:04
【问题描述】:
我有一个可以并行运行的程序,即可以同时运行多个进程实例。假设它是一个名为MyProgram.exe 的.exe 文件。
该程序的每次运行都会在名为RunId 的数据库中创建一个唯一ID。每次运行都有一个status。状态可以是"Running"、"Run" 和"Error"。当程序开始运行时,状态设置为“正在运行”,最终,如果一切正常,状态将更新为“运行”或出现错误时更新为“错误”。
这一直有效,直到程序意外退出。例如,当服务器突然关闭时。在这种情况下,该特定运行的状态将保持"Running",这是不正确的。这会导致程序混乱。
上次我对这个问题进行快速研究时,有人推荐了一个明智的解决方案,不幸的是,这可能不适用于我的情况:
解决方案是在进程启动时在某处创建一个带有该进程 ID 的临时文件。当它结束时(“运行”,“错误”)删除这个文件。这样,您可以在下次运行程序时查看文件是否仍在运行,然后决定要做什么。
这个解决方案的问题是当我们看到一个临时文件并且程序真的还在运行时!这意味着程序没有意外退出,但需要一段时间才能完成。所以我们不想终止它。
长话短说,当我们的程序意外存在时,我们如何以更好的方式通知自己?
【问题讨论】:
-
临时文件的解决方法好像不错。您的进程只需要专门锁定文件。当文件被锁定时,你知道程序正在运行......