Serialization 您能否将正在运行的Lua协同程序转储到一个文件中,以便以后继续?

Serialization 您能否将正在运行的Lua协同程序转储到一个文件中,以便以后继续?,serialization,lua,coroutine,Serialization,Lua,Coroutine,在考虑使用Lua协程的游戏的加载/保存机制时,出现了一个非常有趣的问题——您能否将运行中的Lua状态完全转储到文件中?除了倾销环境的明显解决方案外,还出现了两个值得注意的问题——倾销函数(我认为这更容易)和倾销协同程序 后者让我怀疑,是否有可能为了以后的恢复呼叫而转储正在运行的协同程序。它的用途相当广泛——从长远来看,它将允许序列化正在运行的任务,并以Erlang风格传递它们 因此问题就来了——这可能吗 我不是在寻找(可能是显而易见的)“不”的答案,因为它可能是在某种程度上的工作需要(因此,在最

在考虑使用Lua协程的游戏的加载/保存机制时,出现了一个非常有趣的问题——您能否将运行中的Lua状态完全转储到文件中?除了倾销环境的明显解决方案外,还出现了两个值得注意的问题——倾销函数(我认为这更容易)和倾销协同程序

后者让我怀疑,是否有可能为了以后的恢复呼叫而转储正在运行的协同程序。它的用途相当广泛——从长远来看,它将允许序列化正在运行的任务,并以Erlang风格传递它们

因此问题就来了——这可能吗


我不是在寻找(可能是显而易见的)“不”的答案,因为它可能是在某种程度上的工作需要(因此,在最坏的情况下,可以尝试黑客编译器)。我感兴趣的是这有多难…

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


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

为Lua提供“高负载持久性”。它可以序列化和反序列化协同路由。

不幸的是,前者确实依赖于Linux,后者只提供表序列化的提示:/@Kornel,当然。但是wiki页面,虽然可能没有正确倾斜,但确实列出了冥王星。此外,由于任何东西都可以存储在表中,包括协程和闭包,表持久性的完整解决方案也必须包括那些更“有趣”的值的持久性。请注意,Pluto与LuaJIT2(以及我知道的所有其他解决方案)不兼容。我刚刚注意到:应该与LuaJIT一起工作,但它要求所有函数都用永久名称进行注释。另一方面,它允许重新加载代码。