我有一个在单线程上运行的c++函数。
例如,
function()
{
Line 1; commit(ms sql)
Line 2; commit(oracle)
}
此功能需要完整完成。
我想知道,如果有人从任务管理器中杀死进程,是否有一种方法可以防止应用程序在第1行和第2行之间中断。
如果1执行,那么2也必须执行。
这可能吗?如果可能,实现这一目标的最佳方法是什么?
提前致谢
没有办法做到这一点。如果内核决定你的进程应该死亡,那么你的进程就会死亡。
如果第一行和第二行修改了一些数据结构
可能是,您需要某种形式的事务机制。
可以,例如:
-
包括Line 1和Line 2在一个数据库事务中
-
make Line 1和2修改一些临时数据结构,并使用像cas这样的原子指令来提交临时文件