【发布时间】:2016-02-08 16:41:54
【问题描述】:
我正在尝试在共享内存中创建一个对象向量,每个对象都拥有一个 interprocess_mutex,如下所示:
struct test
{
test(){}
interprocess_mutex mutex;
};
using namespace boost::interprocess;
managed_shared_memory seg(open_or_create, "MySharedMemory", 65536);
allocator<void, managed_shared_memory::segment_manager> void_alloc_(seg.get_segment_manager());
vector<test, allocator<test, managed_shared_memory::segment_manager>> vec(void_alloc_);
vec.push_back(test());
但是 interprocess_mutex 明确缺少复制/移动构造函数,并且 clang 无法编译并出现此错误:
copy constructor of 'test' is implicitly deleted because field 'mutex' has an inaccessible copy constructor
interprocess_mutex mutex;
这是有原因的吗?看起来 boost::thread 互斥体有一个复制构造函数。如何使用 interprocess_mutex 完成此操作?
【问题讨论】:
-
参见:stackoverflow.com/a/29988626/576911 类型不同但问题相同。
标签: c++ boost boost-interprocess