multithreading - C++11中如何根据特定条件创建一个新线程并稍后加入它?

标签 multithreading c++11 join

std::thread main;
if (/*check code here*/)
{
main = std::thread(thread_hunt);
 }
main.join();

如果未在 if 语句中初始化,此代码将在主线程加入时导致错误。

bool i=false;
std::thread main;
if (/*check code here*/)
{
main = std::thread(thread_hunt);
j=true;
}
if (j)
{
main.join();
}

代码运行良好,但是有没有更简单的方法可以实现这个目标?

最佳答案

您可以在线程对象上使用 joinable() 方法。

就您而言:

std::thread main;
if (/*check code here*/)
{
    main = std::thread(thread_hunt);
}

if (main.joinable())
{
    main.join();
}

关于multithreading - C++11中如何根据特定条件创建一个新线程并稍后加入它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31535321/

相关文章:

multithreading - Rust-将函数引用传递给线程

java - 如何在多线程中重用现有的 WebDriver 实例

multithreading - Dlang,Socket,聊天服务器

C++11 vector<bool> 性能问题(附代码示例)

c++ - 使用OpenCv的矩阵运算(加法和减法)OpenCV C++

sql - MySQL LEFT JOIN 中的多个变量

mysql - SQL:查询两个单独的表并返回计数值,然后按两个返回值分组

python - 主程序结束时如何终止线程?

c++ - 通过引用传递、常量引用、右值引用还是常量右值引用?

mysql - 选择在 Yii CDbCriteria 中不起作用