#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
を動作していないが、私はdeferred
の代わりtimeout
するfuture_status
を期待していました。 sampleFunction
がlaunch::deferred
として開始されました。したがって、f1.get()
が呼び出されるまで実行されません。このような状態でwait_for
はfuture_status::deferred
で、future_status::timeout
ではないはずです。C++ 11 future_status ::延期上記の例では
誰かが私にこのことを理解させることができたら大いに感謝します。 私はFedoraの上++バージョン4.7.0をグラムを使用しています17.
GCCと提供された標準ライブラリは、C++ 11のすべての機能をまだ完全に実装していません。例えば、ライブラリの状態については、[here](http://gcc.gnu.org/onlinedocs/libstdc++/manual/status.html)を参照してください。 Joachimによって引用されたページの –
: "クラステンプレート未来:\t部分:時間指定された待機関数はfuture_statusを返しません"。それはすべてだ – Walter
問題は解決されていないので、投票を終了する。 –