异步运行lua_pcall。

我正在开发一个 C 应用程序,同时将 LUA 作为脚本语言集成进去,嵌入 LUA 没有任何问题。

目前我想知道是否有可能从我的 C 应用程序中同时运行 2 或 3 个不同的脚本,我注意到 lua_pcall 是同步运行的(因此在脚本的完整执行之前不会返回)。

有没有办法同时运行多个脚本,或者至少让 lua_pcall 异步运行。 我不希望在脚本本身中提供解决方案,因为我无法控制将运行的脚本(客户将编写用于配置的脚本,我不希望告诉他你必须这样做,以及在你的脚本中处理同步).

点赞
用户2633831
用户2633831

正如 Eran 所说,你可以很容易地在一个独立的系统线程中运行一个新的 lua_State(通过 newthread 创建)。

除此之外,你真正需要做的只是一些基本的加锁(实现 lua_lock/lua_unlock/init/shutdown),以便全局状态元素(_GRegistry 和一些内部元素)不会被多个线程访问。

2013-10-30 13:43:34