【发布时间】:2012-10-11 23:05:54
【问题描述】:
我希望能够将 libtask 协程挂起到磁盘,然后在不同的进程下再次恢复它们,这样它们就可以从中断的地方继续。
【问题讨论】:
我希望能够将 libtask 协程挂起到磁盘,然后在不同的进程下再次恢复它们,这样它们就可以从中断的地方继续。
【问题讨论】:
这是不可能的。协程状态与正在运行的进程的执行状态、打开的文件描述符等相关联。在一般情况下,这实际上是一个非常难以解决的问题,请参阅维基百科上的此页面进行讨论:
http://en.wikipedia.org/wiki/Application_checkpointing
您可以采取的方法是仔细定义协程的状态并确定您需要存储哪些信息才能重建它。然后,根据该信息,您可以让协程能够恢复。
Dragonfly BSD 能够暂停任务并稍后恢复它们,但这是我听说过的唯一通用解决方案,除了 Smalltalk 和 Squeak 等基于 VM 映像的系统。
【讨论】: