引用维基百科,checkpointing“基本上包括存储当前应用程序状态的快照,稍后,在发生故障时使用它来重新启动执行。”
我需要检查点并恢复 C ++ 科学应用程序(我们写的)。该程序是单线程,并且不依赖于其他正在运行的应用程序:没有GUI,没有网络,没有管道,没有分叉等等。所有这些都是计算和文件I / O。
在Linux上,DMTCP非常适合我。它甚至不需要修改源代码也不需要重新链接。 BLCR和Condor也支持Linux上的检查点。
在不久的将来,我将不得不在Windows上运行该应用程序。我四处搜索,找不到任何适用于Windows的检查点库。原则上,我可以修改应用程序,以便在请求时将其状态转储到磁盘上,并在下次运行时重新加载数据。但是,由于应用程序的复杂性,即使在序列化库的帮助下,也需要付出很多努力。
那么, Windows上是否有任何C / C ++检查点库?如果库需要修改我的代码,那就完全没问题了。理想情况下,库允许我根据请求检查 (例如通过发送信号/消息),而不是仅能够在代码中的特定点保存状态。
(我知道similar questions说检查点通常不可能。但是,我的情况可能并且我一直在Linux上这样做。)
答案 0 :(得分:2)
尝试将程序构建为共享库,并从内部因素或sbcl中调用它。然后使用其中任何一个的构建检查点功能。