当 T1 在 C++ 多线程中运行/执行其任务时,我可以将所有权从线程 T1 移至 T2吗

问题描述 投票:0回答:1

当 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();
}
c++ multithreading oop
1个回答
0
投票

是的,你的例子看起来不错。

我感觉到一个 XY 问题,请记住,移动 C++ 线程对象并没有说明线程创建的资源,那里的规则取决于资源,以及可能更详细的操作系统规则。

© www.soinside.com 2019 - 2024. All rights reserved.