我目前正在学习 C++ 中的并发性,并且遇到了使用线程向量的情况,我相信这在 C++0x 中是可能的。但是,我当前的编译器似乎没有移动感知容器的实现,因此我会因为std::thread::thread(const std::thread&)
被删除而生成错误,即我只能将移动构造函数/移动赋值与std::thread
.
我是否正确地认为我可以通过使用编写自定义分配器来规避这个问题
void MyAllocator::construct (pointer p, reference val)
/* should be non-const reference to val because using move constructor? */
{
new ((void*)p) T (std::move(val));
}
而不是
void allocator::construct (pointer p, const_reference val)
{
new ((void*)p) T (val);
}
? 或者这个主题的一些其他变体(可能使用 MyAllocator::construct 的重载)。
注意:这主要是为了作为一个短期的教育练习和足够好的执行工作来玩转容器中的线程。我只会MyAllocator
在这种情况下使用。但是,也请向我指出任何可能已实现此功能的库,以便我可以在源代码上进行戳戳。