7

可以说我有以下课程

 class A
 {
 public:
    A()
    {
       my_thread=std::thread(std::bind(&A::foo, this));
    }
    ~A()
    {
       if (my_thread.joinable())
       {
          my_thread.join();
       }
    }
 private:
    std::thread my_thread;
    int foo();
 };

基本上,如果我的线程在 joinable 和 join 调用之间完成,那么my_thread.join会永远等待吗?你如何解决这个问题?

4

1 回答 1

13

基本上,如果我的线程在joinableandjoin调用之间完成,那么my_thread.join会永远等待吗?

不可以。线程完成后仍然可以加入;它只有在连接或分离后才变得不可连接。

thread在销毁控制对象之前,必须加入或分离所有线程。

于 2014-04-03T16:32:51.663 回答