检查线程是否在c ++ 11中完成?

Ham*_*JML 1 c++ multithreading c++11

我需要一种方法来了解我正在运行的线程是否已完成.如果没有完成,则等待,如果完成则打印成功的消息.

我没有从库线程中找到c ++ 11中的方法或类似的东西.我无法设置全局变量,因为我使用的内部线程execvp如果成功则不会返回.

有没有办法做到这一点?方法或旗帜或其他任何东西.

Edit: 为了清楚起见,我想编写一个检查线程是否完成的函数.

Max*_*kin 6

你可以使用C++ 11期货和承诺:

Futures是一种在线程之间传递值的高级机制,允许线程等待结果可用而无需直接管理锁.

使用普通线程的期货的好处是:

  • Future返回一个值.
  • 您可以等待超时的未来.

当然,这可以通过普通线程完成,但为什么要用C++ 11重新实现轮子.

  • 使用0超时调用[std :: future :: wait_until()](http://en.cppreference.com/w/cpp/thread/future/wait_until). (3认同)