Jas*_*son 0 c++ multithreading compiler-errors c++11
给定一个向量std::thread
std::vector<std::thread> vThreads;
vThreads.push_back(std::thread([]() {
std::thread _t;
_t.detach();
}));
for (int i=0; i < vThreads.size(); i++)
{
std::thread _t = (std::thread) vThreads.at(i); <!-- ERROR
}
Run Code Online (Sandbox Code Playgroud)
尝试在我得到的中执行演员for loop
:Calling a private constructor of class 'std::__1::thread'
但是看http://www.cplusplus.com/reference/thread/thread/
我没有看到任何标记为私有的构造函数。
我误解了什么?
std::thread
是不可复制的。根据您在for
循环中要执行的操作,您需要
std::thread& _t = vThreads.at(i);
Run Code Online (Sandbox Code Playgroud)
或者
std::thread _t = std::move(vThreads.at(i));
Run Code Online (Sandbox Code Playgroud)
我建议使用基于范围的 for 来循环vector
for(auto&& t : vThreads) {
// t is a reference to an std::thread object
}
Run Code Online (Sandbox Code Playgroud)