关于std::thread
有一点我不明白: 为什么std::thread
的构造函数需要函数运行rvalue?为什么std :: thread函数是由右值运行的?
我通常想与一些成员运行Functor到另一个线程。像这样:
struct Function
{
void operator() (/* some args */)
{
/* some code */
}
/* some members */
}
void run_thread()
{
Functor f(/* some data */);
std::thread thread(f, /* some data */);
/* do something and wait for thread to finish */
}
当前实现std::thread
我必须确定我的对象是实现移动语义。我不明白为什么我不能通过引用来通过它。
额外的问题是:什么意思是通过右值引用函数? Lambda表达式?
'std :: thread'的构造函数通过转发引用来实现其功能。 –
你的对象不需要实现移动语义。如果移动不被支持,它只需要复制。 – nwp
@nwp:什么情况下,什么时候该对象已经删除了复制构造函数?为什么需要该副本? –