首页 > 解决方案 > std::thread::join 不返回

问题描述

我正在尝试对我的程序进行多线程处理,并尝试使用单独的线程来运行特定功能。但是,每当我在所述线程上调用 join() 函数时,它永远不会返回,并且程序将停止响应。我正在检查线程是否可以连接。

这是我所拥有的:

static std::thread receiveThread = std::thread(&Server::receiveData, this);
if (receiveThread.joinable())
    {
        receiveThread.join();
        receiveThread = std::thread(&Server::receiveData, this);
    }

标签: c++multithreadingstd

解决方案


std::thread::join仅在线程(由线程包装器拥有)返回后返回。如果有问题的线程永远不会返回,那么调用也std::thread::join永远不会返回。


推荐阅读