gpt4 book ai didi

c++ - 两个 C++ 应用程序在 Linux 上共享一个只读内存区域

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:22:36 28 4
gpt4 key购买 nike

我有两个进程 P1 和 P2。

我有一个名为“R”的大型只读资源,我希望 P1 和 P2 都能访问它。

R 不仅仅是一个“平面”字节组;它是一堆相互指向彼此的 C++ 对象。

我希望 P1 和 P2 只共享一个 R 拷贝——以某种方式让 P1 将 R 加载到内存中的一个区域(在 P1 和 P2 中映射到同一地址),然后 P1 和 P2 都可以访问这些对象在 R 中作为 C++ 对象(没有竞争条件,因为所有内容都是只读的)。

有人熟悉如何执行此操作/陷阱吗?

最佳答案

实际上类似的东西已经asked and solved before :

最佳答案可能对您有用:使用 boost interprocess library .虽然您仍然不能使用具有虚函数的对象(共享内存问题之外的讨厌的 vtable 指针),但它们确实有工具可以让您使用智能指针指向共享内存内的其他对象,以及在共享内存内分配的自定义分配器以创建std::vector 和 std::map 对象。

关于c++ - 两个 C++ 应用程序在 Linux 上共享一个只读内存区域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2084098/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com