#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
de trabajo En ejemplo anterior, que estaba esperando a ser future_status
deferred
en lugar de timeout
. sampleFunction
ha sido lanzado como launch::deferred
. Por lo tanto, no se ejecutará hasta que se haya llamado al f1.get()
. En tal condición wait_for
debería haber devuelto future_status::deferred
y no future_status::timeout
.C++ 11 future_status :: diferida no
Apreciar si alguien puede ayudarme a entender esto. estoy usando g ++ versión 4.7.0 en Fedora 17.
GCC y la biblioteca estándar suministrada aún no implementa completamente toda la funcionalidad de C++ 11. Ver p. [aquí] (http://gcc.gnu.org/onlinedocs/libstdc++/manual/status.html) para conocer el estado de la biblioteca. –
de la página citada por Joachim: "Class template future: \t Parcial: las funciones de espera temporizadas no devuelven future_status". lo dice todo – Walter
Votación para cerrar, ya que el problema no tiene resolución. –