你可以将一个正在运行的Lua协程转储到一个文件中以便以后恢复吗?

时间:2011-03-10 00:41:00

标签: serialization lua coroutine

在考虑使用Lua协同程序的游戏的加载/保存机制时,出现了一个非常有趣的问题 - 你可以将正在运行的Lua状态转储到文件中吗?除了倾销环境的明显解决方案之外,还出现了两个值得注意的问题 - 转储功能(我认为更容易),以及转发协同程序。

后者让我想知道,是否有可能为后来的恢复呼叫转储正在运行的协程。它的用途相当广泛 - 从长远来看,它将允许序列化正在运行的任务并将它们传递给Erlang样式。

因此问题 - 是否可能?

我不是在寻找(可能很明显)“不”的答案,因为它可能在某种程度上需要工作(在最坏的情况下,可能会试图破解编译器)。我很感兴趣它会有多难......

2 个答案:

答案 0 :(得分:9)

PlutoLibrary为Lua提供了“重型持久性”。它可以序列化和反序列化协程。

答案 1 :(得分:2)

有一个实验模块lper可以保存和恢复整个Lua解释器的状态。我个人从未玩过它,因为它取决于没有明显Windows对应的Linux persistent memory库。它可能会作为进一步研究的起点。

wiki中还有一个Lua持久性解决方案列表。