根据Lua5.1手册,lua_xmove在属于同一lua状态的不同线程堆栈之间移动值。但是,我偶然地用它来在不同的Lua州移动值,而且它似乎工作得很好!是否有其他API将值从一种Lua状态移动到另一种状态(在5.1中),或者可以使用lua_xmove?
发布于 2013-10-15 18:38:53
Lua将垃圾收集数据存储在全局状态中。因此,如果跨州移动GC或string对象,可能会混淆垃圾收集器并创建悬空引用。
因此,虽然它看起来很有效,但也很容易在以后引发问题。
有关参考,请参见开发人员讨论此问题的这个邮件列表线程。
请注意,lua_xmove确实检查全局状态是否相同:
api_check(from, G(from) == G(to));https://stackoverflow.com/questions/19388476
复制相似问题