我有一个提升进程间向量,其中包含字符串(boost :: interprocess :: basic_string)作为保存在共享内存中的值,我从长远来看这个错误
include/boost/interprocess/mem_algo/rbtree_best_fit.hpp:1346: void boost::interprocess::rbtree_best_fit<MutexFamily, VoidMutex, MemAlignment>::priv_deallocate(void*) [with MutexFamily = boost::interprocess::mutex_family; VoidPointer = boost::interprocess::offset_ptr<void>; long unsigned int MemAlignment = 0ul]: Assertion
priv_is_allocated_block(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);
在另一个过程中我这样做是为了访问它
mem_segment->find<SharedVector>(t"sharedvector").first;
答案 0 :(得分:0)
没有限制
是
你没有提到任何锁定。我想这可以解释你的问题。
多个进程同时访问共享资源 需要与多个线程进行相同数量的访问同步。当然,区别在于您使用进程间同步对象