转移线程的所有权
void function();
void function1();
std::thread t1( function ); //启动一个新线程t1与function关联
std::thread t2 = std::move(t1); //将t1限行的转移给t2
t1 = std::thread( function1 ); //启动一个临时的对象与function1关联
std::thread t3; //默认构造一个t3,无任何关联
t3 = std::move(t2);//将t2显性的转移给t3,此刻t2无任何关联
t1 = std::move(t3);//因为t1已经有一个关联,此时会调用std::terminate()来终止程序
std::thread还支持return 来转移
std::thread g()
{
void t1(int i);
std::thread f(t1,40);
return f;
}