如何将线程或进程移动到另一台计算机
How to move a thread or process to another computer
我正在尝试将一个线程(或进程)序列化为一个文件并在其他时间在另一台机器上执行该线程。
其实我的是这样的:
for (BigInteger i = 0; i < ABigIntegerVariable; i++)
{
// My Calculation
}
我想暂停计算并保存它的状态,稍后用保存的状态恢复它,可能在不同的机器上。
注意: 我无法在程序关闭时保存数据,因为它包含对象并且保存对象似乎是正确的
谢谢
您不能只保存当前的循环迭代器值以及您想要 "move" 时的任何计算状态吗?这当然取决于该循环内究竟发生了什么,但也许每次迭代后的粗略序列化就足以让您从新位置开始?
当然,你的循环必须从保存的数据开始,而不是从 i = 0 开始,但正如我所说,你没有分享任何关于 //My Calculation 中发生的事情的细节,所以要么提出更多细节问题或尝试自己解决。
另外,根据 Sidewinder94 的评论,对象的序列化没有问题,除非你做错了。
另外一个想法:这些计算是否取决于您的循环迭代器或先前循环的结果?因为如果不是,您可以将它们分成多个 threads/tasks 并利用并行计算。
我正在尝试将一个线程(或进程)序列化为一个文件并在其他时间在另一台机器上执行该线程。
其实我的是这样的:
for (BigInteger i = 0; i < ABigIntegerVariable; i++)
{
// My Calculation
}
我想暂停计算并保存它的状态,稍后用保存的状态恢复它,可能在不同的机器上。
注意: 我无法在程序关闭时保存数据,因为它包含对象并且保存对象似乎是正确的
谢谢
您不能只保存当前的循环迭代器值以及您想要 "move" 时的任何计算状态吗?这当然取决于该循环内究竟发生了什么,但也许每次迭代后的粗略序列化就足以让您从新位置开始?
当然,你的循环必须从保存的数据开始,而不是从 i = 0 开始,但正如我所说,你没有分享任何关于 //My Calculation 中发生的事情的细节,所以要么提出更多细节问题或尝试自己解决。
另外,根据 Sidewinder94 的评论,对象的序列化没有问题,除非你做错了。
另外一个想法:这些计算是否取决于您的循环迭代器或先前循环的结果?因为如果不是,您可以将它们分成多个 threads/tasks 并利用并行计算。