当 T1 执行 func_1() 时,我可以使用 std::move() 将所有权从线程 T1 移动到 T2吗
我不确定这是否是正确的方法?有人说我们不应该在线程运行时移动所有权。我们应该在运行线程之前执行此操作。 你能告诉我正确的方法是什么以及如何做吗?
#include <iostream>
#include <thread>
#include <chrono>
void func_1()
{
while (true)
{
std::cout << "thread_id :" << std::this_thread::get_id() << std::endl;
int x = 0;
while (x < 2000)
{
std::cout << "x :" << x << std::endl;
x++;
}
break;
}
}
int main()
{
std::thread T1(func_1);
std::thread T2(std::move(T1));
T2.join();
}
是的,你的例子看起来不错。
我感觉到一个 XY 问题,请记住,移动 C++ 线程对象并没有说明线程创建的资源,那里的规则取决于资源,以及可能更详细的操作系统规则。