我有一个全局表,我想在两个不同的 Lua 状态之间保持同步。根据我所阅读和理解的内容,唯一的方法似乎是,在我的 C 后端,在状态之间进行表的深层复制(如果表已被修改)。有没有更好的办法 ?
另外,我看到了一些用于表深层复制的 Lua 片段,但不是在 C 中,是否有任何库[在 C] 中执行此操作?
附言我不是在找 lua_thread
基于解决方案(我已经在使用它)
P.P.S Lua Lanes 似乎很接近,但是 IMO,似乎太多了,因为我只想同步 1 个表!
最佳答案
请注意,如果您要写入的表中已存在该键,则 __newindex 将不起作用。
另一种方法是保持表格为空,以便它永远不会有任何实际内容。您可以将所有实际数据保存在 C 中,在这种情况下,两种状态都不需要填充表,而您的元表可以用作任何线程中数据的 View 。这样做的好处是不需要任何一方的数据副本,因为数据将根据要求提供。
如果需要,自定义 __pairs 函数可以迭代您的内部数据,再加上一个 __index 函数来查看数据,您就可以离开了。
关于lua - 跨 Lua 状态复制全局表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19232246/