在不同的Lua状态之间移动 lua_xmove

根据 lua 5.1 手册,lua_xmove 可以在同一个 Lua 状态下的不同线程之间传递值。但是,我无意中将它用来在不同的 Lua 状态之间传递值,它似乎也能正常工作!在 lua 5.1 中是否还有其他 API 可以将值从一个 Lua 状态移动到另一个 Lua 状态,或者可以继续使用 lua_xmove

点赞
用户1204143
用户1204143

Lua 将垃圾回收数据存储在全局状态中。因此,如果在不同状态之间移动垃圾回收或字符串对象,可能会混淆垃圾收集器并创建悬空引用。

因此,虽然看起来它是可以工作的,但它也有可能在以后引起问题。

有关更多信息,请参阅这个邮件列表线程,其中开发人员讨论了这个确切的问题。

请注意,lua_xmove会检查全局状态是否相同:

api_check(from, G(from) == G(to));
2013-10-15 18:38:53