我希望能够将libtask协同程序暂停到磁盘,然后在不同的进程下再次恢复它们,以便它们可以在中断的地方继续。
答案 0 :(得分:2)
这是不可能的。协程状态与运行进程的执行状态,打开文件描述符等有关。在一般情况下,这实际上是一个非常难以解决的问题,请参阅Wikipedia上的这个页面进行讨论:
http://en.wikipedia.org/wiki/Application_checkpointing
您可以采取的方法是仔细定义您的协程的状态,并确定您需要存储哪些信息才能重建它。然后,您可以使协同程序能够恢复该信息。
Dragonfly BSD能够暂停任务并稍后恢复它们,但这是我所听到的唯一通用解决方案,除了基于VM图像的系统,如Smalltalk和Squeak。