引用 Wikipedia 的话,检查点“基本上包括存储当前应用程序状态的快照,然后在出现故障时使用它来重新启动执行。”
我需要检查点并恢复C++科学应用程序(我们编写的)。该程序是单线程的,不依赖于其他正在运行的应用程序:没有 GUI、没有网络、没有管道、没有 fork 等。它所做的只是计算和文件 I/O。
在 Linux 上,DMTCP非常适合我。它甚至不需要修改源代码或重新链接。BLCR 和 Condor 也支持 Linux 上的检查点。
在不久的将来,我将不得不在 Windows 上运行该应用程序。我四处搜索,找不到任何适用于 Windows 的检查点库。原则上,我可以修改应用程序,以便它根据请求将其状态转储到磁盘上,并在下次运行时重新加载数据。但是,由于应用程序的复杂性,即使在序列化库的帮助下,这也需要付出很多努力。
那么,Windows 上是否有任何 C/C++ 检查点库?如果库需要对我的代码进行修改,那就太好了。理想情况下,该库将允许我根据请求检查点(例如通过发送信号/消息),而不是只能在代码中的特定点保存状态。
(我知道类似的问题说检查点通常是不可能的。但是,这对我来说是可能的,而且我一直在 Linux 上这样做。)