如何檢查線程是否已在C++ 11及更高版本中完成工作?我一直在閱讀文檔,我寫了下面的代碼:如何檢查線程是否已在C++ 11及更高版本中完成工作?
#include <iostream>
#include <thread>
void mythread()
{
//do some stuff
}
int main()
{
std::thread foo(mythread);
if (foo.joinable())
{
foo.join();
//do some next stuff
}
}
joinable
只告訴你該線程已經開始工作,但我想知道如何編寫代碼,以檢查是否線程完成工作。
例如:
#include <iostream>
#include <thread>
void mythread()
{
//do some stuff
}
int main()
{
std::thread foo(mythread);
if (foo.finishedWork())
{
foo.join();
//do some next stuff
}
}
'join'告訴你線程已經完成。 – knivil
['std :: future'](http://en.cppreference.com/w/cpp/thread/future)可能是你想要使用的 – WhiZTiM
@knivil:它阻塞直到線程結束。因此,如果已加入線程,但您知道該線程已完成,但使用'join'沒有「*線程還未完成*」選項。 – Pixelchemist