ja testuje funkcję std :: asynchronicznym z kodem z http://www.justsoftwaresolutions.co.uk/threading/multithreading-in-c++0x-part-8-futures-and-promises.htmlasynchroniczna funkcja 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);
Muszę zadzwonić the_answer.get(), aby wywołać calculate_the_answer_to_LtUaE() i uzyskać Aaa wydrukowane na ekranie. Gdybym skomentował linię the_answer.get(), nic nie wydrukowałbym. Czy jest to zamierzone zachowanie funkcji std :: async, czy też robię coś złego tutaj? Jest tak, ponieważ myślałem, że the_answer.get() jest używany do czekania na zakończenie funkcji i pobrania wyniku.
Dzięki.
Domyślam się, że zachowanie widzisz zachowanie jest dopuszczalne zgodnie z normą, chociaż jest to bardzo nieoptymalne. Teraz wszystko jest zepsute, ponieważ nie masz 'return' na końcu' calcul_the_answer_to_LtUaE'. – Omnifarious