std::this_thread::sleep_for(std::chrono::seconds(5));
using TaskList = std::vector<std::thread>;
int main()
{
TaskList tasklist;
std::thread th(
[]()
{
cout<<"task1 working"<<endl;
std::this_thread::sleep_for(std::chrono::seconds(5));
}
);
tasklist.emplace_back(std::move(th));
for(auto &item : tasklist)
{
item.join();
}
return 0;
}
这里有两个问题:
一
tasklist.emplace_back(std::move(th));
不用std::move就报错了
二
for(auto &item : tasklist)
不用引用就报错了
这种不加引用的修改是不会作用在原数组上的;
三.引用一篇文章
error: use of deleted function ‘std::mutex::mutex(const std::mutex&)_WXF明的博客-CSDN博客
四:简化操作
int main()
{
TaskList tasklist;
tasklist.emplace_back(std::move(
std::thread(
[]()
{
cout<<"task1 working"<<endl;
}
)
));
for(auto &item : tasklist)
{
item.join();
}
return 0;
}