LuaInterface随机抛出异常。

我在制作游戏时使用LuaInterface进行脚本编写。

脚本运作得很好,但是我总是遇到许多随机的异常。

我将问题缩小到了从C#代码调用lua函数的位置,这些函数是从另一个处理与游戏服务器网络交互的线程中调用的。

我认为问题出在Lua代码被运行且从另一个线程中调用C#的lua函数,这导致了随机错误。

我如何从C#调用函数:

function.Call(message);

函数的类型是LuaFunction,消息是自定义对象。

我遇到的错误:

  • 在LuaInterface.dll中发生了第一次类型为'LuaInterface.LuaScriptException'的异常
  • 运行lua错误:函数
  • 在LuaInterface.dll中发生了第一次类型为'LuaInterface.LuaScriptException'的异常
  • 无法打开脚本:mainmenu/console

是否与从创建LuaVM的线程以外的线程运行Lua函数有关?

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

点赞
stackoverflow用户596285
stackoverflow用户596285

Lua 不是线程安全的。您需要为每个线程拥有一个 Lua 状态并调用线程特定状态,或者在任何 Lua 调用周围放置锁。

2011-08-30 14:16:37
stackoverflow用户444985
stackoverflow用户444985

问题确实出在线程上,感谢 BMitch 指出。

我通过让消息线程将带参数的函数交给主线程来解决了这个问题,然后在更新方法中调用它们。

2011-08-30 16:08:46