克隆Lua州

pac*_*nga 6 lua cloning

伙计们,有没有办法克隆Lua状态?

在我的游戏应用程序中,Lua虚拟机的初始化过程非常繁重(大约1秒,因为许多脚本一次加载).我为每个自治代理程序都有一个单独的Lua VM,一旦创建了代理程序,它的Lua初始化对FPS影响非常大.

我正在考虑以下架构:如何保持"preforked"Lua状态,然后只为每个代理克隆?可能吗?

ijp*_*est 4

您需要考虑为每个自治代理使用 Lua 的协程,而不是完全独立的虚拟机。协程是一种更轻量级的解决方案,但可能适合也可能不适合您的应用程序。

如果你无法改变架构,你可以尝试LuaJIT。它可能会使初始化足够快以满足您的目的。

更多的选择:

  1. Rings:“Rings 是一个库,它提供了一种从 Lua 内部创建新 Lua 状态的方法。它还提供了一种在创建者(主)状态和创建的(从)状态之间进行通信的简单方法。”

  2. Pluto:“Pluto 是一个库,允许用户将“Lua 宇宙”的任意大部分写入平面文件,然后将它们读回相同或不同的 Lua 宇宙。”

  • 一个协程中的致命错误不会以任何方式影响其他协程。只要我们谈论 Lua 代码——用户提供的东西当然可能会对其编程造成任何损害。 (3认同)