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

时间:2012-11-13 10:59:42

标签: c++ multithreading c++11

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

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

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

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

1 个答案:

答案 0 :(得分:6)

您可以使用C++11 futures and promises

  

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

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

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

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