【发布时间】:2012-08-25 23:46:11
【问题描述】:
我有以下代码模式:
class A {
double a, b, c;
...
};
class B {
map<int, A> table; // Can have maximum of MAX_ROWS elements.
...
};
class C {
B entries;
queue<int> d;
queue<int> e;
...
};
现在我想在共享内存中存储一个 C 类型的对象,以便不同的进程可以追加、更新和读取它。我怎样才能做到这一点? (注意:我知道如何在共享内存中存储一个具有固定大小的简单 C 数组。另外,请记住 B.table 可能有任意条目。
【问题讨论】:
-
这并不容易。对于所有知道共享内存的容器,您需要一个特殊的分配器。在 C++11 中,由于有状态分配器,这更容易实现,但无论如何它都不是微不足道的。
-
我正在使用 i686-apple-darwin11-llvm-g++-4.2。你们需要有关特定编译器或平台的更多信息吗?
标签: c++ stl shared-memory