在闭包join()线程C ++之前更新joinable()

时间:2015-03-11 11:05:47

标签: c++ multithreading thread-safety

如何管理这样的线程:

thread th(foo);

while(th.joinable())
{
  // thread foo is active;
  // some printing from foo function for example
}

th.join();

这个while是无限的,因为th.joinable()始终为true而不是更新。是什么原因以及如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

正如Joachim指出的那样,只要线程尚未连接(或默认构造),joinable()就为真。

根据我的理解你的要求(来自你的评论),你可以在没有while循环的情况下调用th.join()。这会阻塞,直到foo完成。