#include <iostream>
#include <future>
#include <chrono>
using namespace std;
using namespace std::chrono;
int sampleFunction(int a)
{
return a;
}
int main()
{
future<int> f1=async(launch::deferred,sampleFunction,10);
future_status statusF1=f1.wait_for(seconds(10));
if(statusF1==future_status::ready)
cout<<"Future is ready"<<endl;
else if (statusF1==future_status::timeout)
cout<<"Timeout occurred"<<endl;
else if (statusF1==future_status::deferred)
cout<<"Task is deferred"<<endl;
cout<<"Value : "<<f1.get()<<endl;
}
Output -
Timeout occurred
Value : 10
上記の例では、代わりfuture_status
に. として発売されました。したがって、が呼び出されるまで実行されません。そのような状態で返品するべきではありません。deferred
timeout
sampleFunction
launch::deferred
f1.get()
wait_for
future_status::deferred
future_status::timeout
誰かがこれを理解するのを手伝ってくれるなら感謝します。fedora 17 で g++ バージョン 4.7.0 を使用しています。