跨Lua状态复制全局表

vyo*_*yom 5 lua global-variables lua-table

我有一个全局表,我希望在两个不同的Lua 状态之间保持同步.从我所阅读和理解的,唯一的方法似乎是,在我的C后端,在状态之间执行表的深层复制(如果表已被修改).有没有更好的办法 ?另外,我看到一些Lua片段用于表格深层复制,但不是在C中,是否有任何库[在C]中执行此操作?

PS我不是在找lua_thread基础解决方案(我已经在使用它了)

PPS Lua Lanes似乎很接近,但IMO似乎太多了,因为我只想同步1张桌子!

Zek*_*sie 3

请注意,如果您要写入的表中已存在该键,则 __newindex 将不起作用。

另一种方法是将表保持为空,这样它就不会包含任何实际内容。您可以将所有实际数据保留在 C 中,在这种情况下,两个状态都不需要填充表,并且您的元表可以用作任何线程的数据视图。这样做的好处是双方都不需要数据副本,因为数据将根据请求提供。

如果需要,可以使用自定义 __pairs 函数来迭代内部数据,再加上 __index 函数来查看数据,然后就可以了。