C++ 我可以在共享内存中存储lua_状态吗?

C++ 我可以在共享内存中存储lua_状态吗?,c++,lua,shared-memory,C++,Lua,Shared Memory,我猜不会(或者,如果可能的话,几乎肯定不值得我花时间) 我的想法是构造一个镜像对象,其中包含的offset\u ptr,它也位于类中,拥有lua\u State,子进程可以使用它来获取指向状态的相关指针的位置,无论这是否可行。。。还有lua\uu方法可能访问的其他对象,我不确定如何将正确的地址传递给它们 我猜我也需要一个特殊的分配器,不确定这是否受支持?因为Lua完全是在标准C中实现的,在共享内存中分配一个Lua\u状态显然是不受支持的。您可以考虑修改源代码以手动实现该功能,但这可能不值得费心。

我猜不会(或者,如果可能的话,几乎肯定不值得我花时间)

我的想法是构造一个镜像对象,其中包含的
offset\u ptr
,它也位于类中,拥有
lua\u State
,子进程可以使用它来获取指向状态的相关指针的位置,无论这是否可行。。。还有
lua\uu
方法可能访问的其他对象,我不确定如何将正确的地址传递给它们


我猜我也需要一个特殊的分配器,不确定这是否受支持?

因为Lua完全是在标准C中实现的,在共享内存中分配一个
Lua\u状态显然是不受支持的。您可以考虑修改源代码以手动实现该功能,但这可能不值得费心。相反,您应该将
lua_State
s从共享内存中移出,并在必要时将任何重要数据复制到共享内存中。

这里的目标到底是什么?我没有完全理解。我有许多需要处理的对象(即调用更新方法)和一些工作进程,它们之间共享这样做的工作。其中一些对象可能希望调用Lua脚本,因此它们需要保存在某个位置的状态。目前,我将所有对象存储在一大块共享内存中,但包含
lua_State
对象是第一个非pod数据结构(首先是我自己没有创建的)我必须处理共享内存的w/r/t和它的原始指针限制。这难道不意味着多个工人可以同时使用同一个
lua_状态
?除非您使用互斥量和信号量等同步访问它,否则这可能会导致问题。每个对象都有自己的
lua\u状态
。每个对象都是一个自包含的信息块,它们都是并行处理的。我不知道在共享内存中分配空间需要什么,但当您创建Lua状态时,您会告诉Lua要使用哪个内存分配器。也许这就足够了。@lhf,共享内存不支持原始指针,因为它们对于每个进程都是不同的地址。Boost包括一个offset_ptr来解决这个问题,这个问题基本上就是对象离offset_ptr本身有多远,它可以跨进程移植。不幸的是,由于Lua是C,它的指针使用量很大。。。