我目前正在學習有關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 ::構造的重載)。
注意:這主要是一個短期的教育練習,並且可以很好地解決容器中的線程問題。在這種情況下,我只能使用MyAllocator
。但是,也請指出任何可能實施此功能的圖書館,以便我可以對源代碼進行調查。