2012-04-22 99 views
1

我的问题是这样的:升压共享内存映射重新连接

为什么我的程序不能重新连接到共享内存映射?

我做我的程序如下(这可能是更容易使用从升压页面为您的例子,而这仅是从我的节目一个小片段):

第一次,对其进行初始化:

m_sharedMemory = new managed_shared_memory(create_only, segmentName.c_str() , 1000000); 
m_hashMap = m_sharedMemory->construct<MyHashMap>(segmentName.c_str())(3, boost::hash<std::string>(), std::equal_to<std::string>() , m_sharedMemory->get_allocator<ValueType>()); 

第二次 “重新连接”

​​3210

这里我的问题是,如果有2个项目插入.second返回的对象查找将显示“1”这实际上是错误的,它应该显示2,之后如果我的程序试图找到存储的地图中的任何东西该程序崩溃。有人已经这样做了。

如果我在初始程序运行中做同样的事情,从哈希查找值是没有问题的。只有在程序被初始化并且稍后重新启动程序并执行附加操作并尝试检索以前插入的值时才会发生这种情况。

感谢您的帮助。

Boost Quick Ref Map Example

回答

0

,而我聊到这个库的“制造者”,他告诉我,这只会是可以使用的地图在同一进程中。