Jef*_*ffV 33 c++ multithreading boost
我认为可加入会表明这一点,但是,似乎并非如此.
在一个工人类中,我试图表明它仍在通过谓词进行处理:
bool isRunning(){return thread_->joinable();}
Run Code Online (Sandbox Code Playgroud)
退出的线程不能加入吗?我错过了什么... boost thread :: joinable是什么意思?
int*_*jay 31
由于即使在终止之后你也可以加入一个线程,所以joinable()仍会返回true,直到你调用join()或detach().如果你想知道一个线程是否仍在运行,你应该能够在等待时间为0的情况下调用timed_join.注意这可能导致竞争条件,因为线程可能在调用之后立即终止.
使用具有最小超时的thread :: timed_join().如果线程仍在运行,它将返回false.
示例代码:
thread_->timed_join(boost::posix_time::seconds(0));
Run Code Online (Sandbox Code Playgroud)