如何检查std :: thread是否有效

Mar*_*ott 6 c++ c++11 stdthread

我有一个类对象,在某些情况下只需要启动一个线程.在析构函数中,无论何时有线程都可以方便地知道.问题是,如何检测std :: thread对象是否是有效线程.

class MyClass
{
public:
   ~MyClass()
    {
       // Attention pseudocode!!!!!
       if(mythread is a valid object)
           mythread.join();

       if(mythread was a valid object in its lifetime)
           Do some stuff
    }

    void DoSomeStuff()
    {
      // May or may not create a thread
    }
private:
   std::thread mythread;
};
Run Code Online (Sandbox Code Playgroud)

Ker*_* SB 9

我相信你正在寻找这个joinable功能:

~MyClass()
{
    if (t.joinable()) { t.join(); }
}
Run Code Online (Sandbox Code Playgroud)