0

我正在使用 LuaInterface 在我正在制作的游戏中编写脚本。

脚本工作得很好,但不知何故我得到了很多随机异常。

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

我认为正在发生的事情是正在运行 lua 代码,并且从另一个线程从 C# 调用 lua 函数,这会导致随机错误。

我如何从 C# 调用函数:

function.Call(message);

function 是 LuaFunction 类型, message 是自定义对象。

我得到的错误:

  • LuaInterface.dll 中发生了“LuaInterface.LuaScriptException”类型的第一次机会异常
  • 运行lua时出错:函数
  • LuaInterface.dll 中发生了“LuaInterface.LuaScriptException”类型的第一次机会异常
  • 无法打开脚本:mainmenu/console

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

4

2 回答 2

1

Lua 不是线程安全的。你要么需要每个线程都有一个 Lua 状态并调用线程特定的状态,要么在任何 Lua 调用周围加锁。

于 2011-08-30T14:16:37.693 回答
0

问题确实是线程问题,感谢 BMitch 指出了这一点。

我已经通过让消息线程将带有参数的函数传递给主线程来修复它,然后主线程在更新方法中调用它们。

于 2011-08-30T16:08:46.450 回答