#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
वापस नहीं होना चाहिए था।सी ++ 11 future_status ::
अगर कोई मुझे समझने में मेरी सहायता कर सकता है तो सराहना करें। मैं फेडोरा पर छ उपयोग कर रहा हूँ ++ संस्करण 4.7.0 17.
जीसीसी और आपूर्ति की गई मानक लाइब्रेरी अभी तक सी ++ 11 की सभी कार्यक्षमताओं को पूरी तरह कार्यान्वित नहीं करती है। उदाहरण देखें [यहां] (पुस्तकालय की स्थिति के लिए http://gcc.gnu.org/onlinedocs/libstdc++/manual/status.html)। Joachim द्वारा उद्धृत पृष्ठ से –
: "कक्षा टेम्पलेट भविष्य: \t आंशिक: समय प्रतीक्षा कार्य भविष्य_स्टैटस वापस नहीं करते हैं"। यह सभी – Walter
बंद करने के लिए मतदान कर रहा है, क्योंकि इस मुद्दे में कोई समाधान नहीं है। –