スレッドが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
}
}
スレッドが完了したことを通知します。 – knivil
['std :: future'](http://en.cppreference.com/w/cpp/thread/future)はおそらくあなたが使いたいものです – WhiZTiM
@knivil:スレッドが終了するまでブロックします。したがって、スレッドが結合されてもスレッドは終了するが、 'join is 'を使って「* thread is finished yet *」オプションがないことがわかる。 – Pixelchemist