在考虑使用Lua协同程序的游戏的加载/保存机制时,出现了一个非常有趣的问题 - 你可以将正在运行的Lua状态转储到文件中吗?除了倾销环境的明显解决方案之外,还出现了两个值得注意的问题 - 转储功能(我认为更容易),以及转发协同程序。
后者让我想知道,是否有可能为后来的恢复呼叫转储正在运行的协程。它的用途相当广泛 - 从长远来看,它将允许序列化正在运行的任务并将它们传递给Erlang样式。
因此问题 - 是否可能?
我不是在寻找(可能很明显)“不”的答案,因为它可能在某种程度上需要工作(在最坏的情况下,可能会试图破解编译器)。我很感兴趣它会有多难......
答案 0 :(得分:9)
PlutoLibrary为Lua提供了“重型持久性”。它可以序列化和反序列化协程。
答案 1 :(得分:2)
有一个实验模块lper可以保存和恢复整个Lua解释器的状态。我个人从未玩过它,因为它取决于没有明显Windows对应的Linux persistent memory库。它可能会作为进一步研究的起点。
wiki中还有一个Lua持久性解决方案列表。