C++ lua_newthread正在停止

C++ lua_newthread正在停止,c++,lua,garbage,C++,Lua,Garbage,我在LUA的线程中使用LUA_newthread,因为我的代码必须执行相同的函数n次 要使用竞争对手的线程,请在C++中实例化一些线程,并为每个线程分配一个lua_状态,该lua_状态=lua_newthread。 这个线程只在应用程序结束时被销毁,所以我总是重用属性lua_state这些线程。我的问题是,, 运行一段时间后,应用程序发生崩溃,这可能是由垃圾收集器引起的吗 在我的上一个应用程序中,我使用了命令lua_gc thread,lua_GCSTOP,0,但错误仍然存在 我尝试的另一个策略

我在LUA的线程中使用LUA_newthread,因为我的代码必须执行相同的函数n次

要使用竞争对手的线程,请在C++中实例化一些线程,并为每个线程分配一个lua_状态,该lua_状态=lua_newthread。 这个线程只在应用程序结束时被销毁,所以我总是重用属性lua_state这些线程。我的问题是,, 运行一段时间后,应用程序发生崩溃,这可能是由垃圾收集器引起的吗

在我的上一个应用程序中,我使用了命令lua_gc thread,lua_GCSTOP,0,但错误仍然存在

我尝试的另一个策略是每次运行lua_resume结束时,我添加命令lua_settop thread,0,以便耗尽电池电量并恢复 没有消耗任何内存空间

请帮助我,会发生什么情况?

Lua线程与CPU线程不同。Lua不是线程安全的;不能跨实际线程并行执行Lua代码。Lua允许协作多任务,但不允许真正的CPU线程

您可以从不同的CPU线程调用不同的实际lua_状态对象,但前提是它们是真正独立的。如果从根Lua_状态创建了Lua线程,则不能在该Lua线程上调用Lua代码,同时也不能在根Lua_状态上调用Lua代码。如果两个Lua线程共享相同的父Lua_状态,则不能同时在这两个Lua线程上执行Lua代码

所以你需要重新调整你正在做的事情。不要使用线程,而是使用lua_newstate为每个CPU线程创建一个lua状态。每个lua_状态将完全独立于其他状态。

lua线程与CPU线程不同。Lua不是线程安全的;不能跨实际线程并行执行Lua代码。Lua允许协作多任务,但不允许真正的CPU线程

您可以从不同的CPU线程调用不同的实际lua_状态对象,但前提是它们是真正独立的。如果从根Lua_状态创建了Lua线程,则不能在该Lua线程上调用Lua代码,同时也不能在根Lua_状态上调用Lua代码。如果两个Lua线程共享相同的父Lua_状态,则不能同时在这两个Lua线程上执行Lua代码


所以你需要重新调整你正在做的事情。不要使用线程,而是使用lua_newstate为每个CPU线程创建一个lua状态。每个lua_州将完全独立于其他州。

谢谢!使用完全独立的lua_状态策略,有没有办法只实现全局变量的共享?我需要访问全局变量。在本例中,我锁定并解锁访问这些变量的方法。谢谢!使用完全独立的lua_状态策略,有没有办法只实现全局变量的共享?我需要访问全局变量。在本例中,我锁定并解锁访问这些变量的方法。