Estoy probando la función std :: asíncrono con el código de http://www.justsoftwaresolutions.co.uk/threading/multithreading-in-c++0x-part-8-futures-and-promises.htmlfunción asíncrona llamada C++ 0x
int calculate_the_answer_to_LtUaE(){
sleep(5);
cout << "Aaa" << endl;
}
std::future<int> the_answer=std::async(calculate_the_answer_to_LtUaE);
the_answer.get();
cout << "finish calling" << endl;
sleep(10000);
necesito llamar the_answer.get() para invocar calculate_the_answer_to_LtUaE() y obtener el Aaa impreso en la pantalla. Si comenté la línea the_answer.get(), no obtendría nada impreso. ¿Es este el comportamiento previsto de la función std :: async o estoy haciendo algo mal aquí? Esto es porque pensé que the_answer.get() se usa para esperar que la función se complete y para recuperar el resultado.
Gracias.
Mi conjetura es que el comportamiento que se está viendo es un comportamiento admisible de acuerdo con la norma, a pesar de que es muy inferior al óptimo. Ahora, todo el asunto también está roto porque no tienes un 'return' al final de' calculate_the_answer_to_LtUaE'. – Omnifarious