在我正在制作的游戏中,我使用LuaInterface编写脚本。
脚本工作得很好,但不知怎么的,我得到了很多随机异常。
我已经将问题缩小到从C#代码调用lua函数的地方,这些函数是从另一个线程调用的,用于处理与游戏服务器的网络连接。
我认为正在发生的情况是,正在运行lua代码,并且从另一个线程从C#调用lua函数,这会导致随机错误。
如何调用C#中的函数:
function.Call(message);函数的类型为LuaFunction,消息是自定义对象。
我所犯的错误:
在LuaInterface.dll
它是否与从创建LuaVM的线程以外的线程运行lua函数有关?
发布于 2011-08-30 14:16:37
Lua不是线程安全的。您要么需要每个线程拥有一个Lua状态,然后调用线程特定的状态,要么在任何Lua调用周围放置锁。
发布于 2011-08-30 16:08:46
问题确实是线程问题,这要感谢BMitch指出了这一点。
我通过让消息线程将带有参数的函数传递给主线程来修正它,然后主线程在更新方法中调用它们。
https://stackoverflow.com/questions/7242968
复制相似问题