你能将正在运行的 Lua 协程保存到文件中以便以后恢复吗?

在为使用Lua协程的游戏设计加载/保存机制时,一个非常有趣的问题出现了——你是否可以完全将正在运行的Lua状态转储到文件中?除了明显的解决方案,即转储环境外,还有两个值得注意的问题——转储函数(我认为这更容易),以及转储协程。

后者让我想到,是否可能完全转储正在运行的协程以便于稍后恢复调用。这方面的用途将非常广泛——从长远来看,它将允许对正在运行的任务进行序列化并像Erlang一样传递它们。

因此,问题是——这可能吗?

我并不是在寻找(可能显而易见的)“否”答案,因为在某种程度上它可能是可能的(因此在最坏的情况下,人们可以尝试入侵编译器)。我更关心的是它的难度......

原文链接 https://stackoverflow.com/questions/5254183

点赞
stackoverflow用户68204
stackoverflow用户68204

有一个实验性的模块 lper,可以保存和恢复整个 Lua 解释器的状态。个人从未使用过它,因为它依赖于Linux persistent memory库,而这个库在 Windows 系统中没有明显的对应物。它可能会成为进一步研究的起点。

此外,在 wiki 中还有 Lua 持久化解决方案列表。

2011-03-10 02:50:51
stackoverflow用户33252
stackoverflow用户33252

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

2011-03-10 03:30:01