2013-10-29 107 views
2

我有一个C应用程序,我整合LUA作为脚本语言在里面,嵌入LUA都很好,没有任何问题。运行lua_pcall异步

目前我想知道是否可以从我的C应用程序同时运行2个或3个不同的脚本,我注意到lua_pcall正在同步运行(所以它不会返回,直到它完成执行脚本

是否有任何方法可以同时运行多个脚本,或者至少让lua_pcall异步运行我不希望脚本本身有解决方案,因为我无法控制脚本运行(客户将编写的配置脚本,我不想告诉他,你必须这样做,等等,所以你的脚本中处理的同步。

+4

LUA是单线程。如果你想要多个线程,你需要自己安排多个lua状态。周围有各种各样的图书馆可以让你从卢阿方面做到这一点。从C端执行此操作应该比自己运行多个线程都要花费更多的工作,每个线程都有自己的Lua状态。 –

+0

@EtanReisner,在C“端”运行两个不同的线程,并在每个端口上启动单独的Lua状态,听起来都不太难。 – Kamiccolo

回答

0

至于叶兰说,你可以在一个单独的系统线程中运行一个新的lua_State(从newthread创建)很容易。

你真正需要的只是一些基本的锁定(实现lua_lock/lua_unlock/init/shutdown),这样全局状态元素(_G,注册表,一些内部)不能从多个线程中访问。