增强进程间进程容器中的进程间错误
我有一个包含字符串(boost :: interprocess :: basic_string)的boost进程间向量作为保存在共享内存中的值,我长期得到这个错误
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
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)'failed .`
总共有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;
不,没有限制
是
你没有提到任何锁定。 我想这解释了你的问题。
多个进程并发访问共享资源需要与多个线程同等数量的访问同步。 当然,区别在于你使用进程间同步对象
链接地址: http://www.djcxy.com/p/50973.html上一篇: boost interprocess error in boost interprocess containers
下一篇: Is it safe to use boost::optional in interprocess memory?