【发布时间】:2014-12-09 04:32:29
【问题描述】:
我想做这样的事情:
void
Bah::f (std::vector <int> && array)
{
std::thread (&Bah::foo, this, std::move (array)) .detach ();
}
void
Bah::foo (const std::vector <int> & array)
{
do something with array
}
问题是:我可以将每个移动引用传递一个数组(变量)到 std::thread,然后在线程函数中作为 const 引用进行访问吗?调用线程函数之前数组移动了吗?
我想要实现的是,我希望在调用 »f« 后数组为空。当 »foo« 被调用时,我不想要数组的副本。
【问题讨论】:
-
是的,我认为是这样,因为线程的参数存储就像
std::decay应用于每个参数类型一样。此时应该移动矢量内容。但一定要测试一下。 ;-)
标签: c++ multithreading c++11 stl reference