8
#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
。C++ 11 future_status ::推遲不工作
感謝有人能幫助我理解這一點。 我使用G ++ 4.7.0版本在Fedora 17
GCC和提供的標準庫尚未完全實現C++ 11的所有功能。見例如[這裏](http://gcc.gnu.org/onlinedocs/libstdc++/manual/status.html)瞭解圖書館的狀態。來自Joachim引用的頁面的 –
:「班級模板未來:\t部分:定時等待函數不返回future_status」。說這一切 – Walter
投票結束,因爲問題沒有解決。 –