Библиотека контрольных точек (моментальных снимков / возобновления) в Windows?

Цитируя Википедию, контрольная точка "в основном состоит из сохранения моментального снимка текущего состояния приложения, а затем , используйте его для перезапуска выполнения в случае сбоя."

Мне нужно проверить и возобновить научное приложение C++ (которое мы написали). Программа однопоточная и не зависит от других запущенных приложений: без графического интерфейса, без сети, без конвейеров, без разветвлений и т. д. Все, что она делает, это расчеты и файл ввод/вывод.

В Linux DMTCP отлично работает для меня. Он даже не требует модификации исходного кода или повторной компоновки. BLCR и Condor также поддерживают контрольные точки в Linux.

В ближайшее время мне предстоит запустить приложение на Windows. Я искал вокруг и не смог найти ни одной библиотеки контрольных точек для Windows. В принципе, я мог бы модифицировать приложение так, чтобы оно сбрасывало свое состояние на диск по запросу и перезагружало данные при следующем запуске. Однако из-за сложности приложения это требует больших усилий даже с помощью библиотек сериализации.

Итак, есть ли какая-либо библиотека контрольных точек C/C++ в Windows? Совершенно нормально, если библиотека требует изменений в моем коде. В идеале библиотека позволила бы мне создавать контрольные точки по запросу (например, путем отправки сигнала/сообщения), а не сохранять состояние только в определенных точках кода.

(Мне известны похожие вопросы, в которых говорится, что контрольные точки обычно невозможны. Однако в моем случае это возможно, и я я делал это все время в Linux.)


person netvope    schedule 22.05.2012    source источник


Ответы (1)


Попробуйте создать свою программу как разделяемую библиотеку и вызывать ее из внутреннего фактора или sbcl. затем используйте возможность создания контрольных точек любого из них.

person Naveen garg    schedule 27.05.2012
comment
Ссылки: SBCL (Википедия), фактор (Википедия). - person netvope; 27.05.2012
comment
Может ли Фактор и контрольная точка SBCL из другого потока во время выполнения функции в общей библиотеке? Или они требуют, чтобы функция возвращалась, прежде чем они смогут сделать контрольную точку? - person netvope; 27.05.2012
comment
Это не может работать, так как он не будет знать, как установить контрольную точку выполняющегося в данный момент кода C++. - person daminetreg; 14.08.2019