lua - 跨 Lua 状态复制全局表

标签 lua global-variables lua-table

我有一个全局表,我想在两个不同的 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/

相关文章:

debugging - 这是lua中的错误,还是我不知道的功能?

regex - 有没有一种方法可以使用 grep(或任何其他工具)过滤文本文件,以便您可以获得包含在大括号或方括号中的文件部分?

string - 向字符串添加逗号

multithreading - 从另一个线程调用Lua函数

c - 主代码中 Global 上的 volatile 限定符,但 ISR 中没有

global-variables - MATLAB:在并行模式下运行时全局变量会发生什么情况?

c++ - 如何从 C++ 中的 Lua 函数获取返回表?

lua - 用Lua编写自动点击器脚本

global-variables - Logo 真的使用动态作用域吗?这与全局变量有何不同?

lua - 如果用 false 初始化,是否有更好的方法来查看 Lua 表中的字段是否存在