スレッド関数から戻り値を待つことはできますか?その値が今までに返されたかどうかをチェックし、その関数が実行されている間に何か他のことをしていますか?私は関数を返すのを待たなければならないのであれば、本当にマルチスレッドではないということです。C++スレッド関数から戻り値を後で取得する
#include <thread>
#include <future>
int func_1(int x)
{
return x; //Assume this takes several seconds to complete
}
int main()
{
auto future = std::async(func_1, 2);
int number = future.get(); //Whole program waits for this
//More code later
while(!number) //Check if number ever returned?
{
//Wait for it or assume some error/default
}
return 0;
}
*「全プログラムがこれを待っています」*もちろん、あなたは明示的に言いました。あなたがそれを必要とする前に、結果を「取得」しないでください。 [docs](http://en.cppreference.com/w/cpp/thread/future)を読んでください。 –
起動タイプ 'std :: async(std :: launch :: async、...)'を明示的に使用することができます。それ以外の場合は、関数が別のスレッドで実行されます。 – Trevir