C++ boost进程间容器中的boost进程间错误
我有一个boost进程间向量,其中包含字符串(boost::进程间::basic_string)作为值保存在共享内存中,从长远来看,我会遇到这个错误C++ boost进程间容器中的boost进程间错误,c++,boost,interprocess,boost-interprocess,C++,Boost,Interprocess,Boost Interprocess,我有一个boost进程间向量,其中包含字符串(boost::进程间::basic_string)作为值保存在共享内存中,从长远来看,我会遇到这个错误 include/boost/interprocess/mem\u algo/rbtree\u best\u fit.hpp:1346:void boost::interprocess::rbtree\u best\u fit::priv\u deallocate(void*)[with MutexFamily=boost::interprocess
include/boost/interprocess/mem\u algo/rbtree\u best\u fit.hpp:1346:void boost::interprocess::rbtree\u best\u fit::priv\u deallocate(void*)[with MutexFamily=boost::interprocess::mutex\u family;VoidPointer=boost::interprocess::offset\u ptr;long unsigned int MemAlignment=0ul]:断言
priv\u is\u allocated\u块(block)”失败`
总共有6个进程写入此向量,还有一个进程弹出数据
问题:
class SharedVector {
public:
boost::interprocess::interprocess_mutex mutex;
complex_vect_type m_vect;
SharedVector(const void_allocator &a) : m_vect(a) {}
};
为了创造,我这样做:
memsegment->construct<SharedVector>("sharedvector") (*m_allocator);
memsegment->construct(“sharedvector”)(*m_分配器);
在另一个过程中,我这样做是为了访问它
mem_segment->find<SharedVector>(t"sharedvector").first;
mem_段->查找(t“sharedvector”)。首先;
多个进程同时访问共享资源需要与多个线程相同数量的同步访问。当然,不同之处在于您使用进程间同步对象谢谢,我有一个boost进程间murex锁,我在push and pop操作中锁定。但是仍然在从属进程中,我得到了问题中指定的错误,请帮助在
pop()
之前检查empty()
?您是否跨empty()
和pop()
持有锁?(还有:请不要这样说“请帮助”。这是不尊重的。很明显我们是来帮助的。)谢谢,我在pop之前检查size()>0,并且在这之前还有一个锁,我已经为pop编写了一个函数,该函数先锁定,然后检查大小,然后弹出数据。@LasyaLatha是时候显示代码了。让它成为一个SSCCE。我们不是通灵者。@LasyaLatha,post简短、独立、正确(可编译),例如,有关详细信息,请参阅。您可以编辑您的帖子并将其添加到那里,而不是试图在难以阅读的注释中压缩任何更长的代码。classSharedVector{public:boost::interprocess::interprocess_mutex mutex mutex;complex_vect_type m_vect;SharedVector(const void_allocator&a):m_vect(a){}
对于创建,我这样做:memsegment->construct(“sharedvector”)(*m_分配器)在另一个过程中,我这样做是为了访问它mem_段->查找(t“sharedvector”)代码>