ben calculate_the_answer_to_LtUaE (çağırmak için the_answer.get() çağırmanız gerekir http://www.justsoftwaresolutions.co.uk/threading/multithreading-in-c++0x-part-8-futures-and-promises.htmlasenkron işlev çağrısı 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);
gelen kodla std :: zaman uyumsuz fonksiyonunu test ediyorum) ve almak Aaa Ekranda basılmış. The_answer.get() satırını yorumlamış olsaydım, yazdırılan hiçbir şeyi alamazdım. Bu std :: async işlevinin amaçlanan davranışı mı yoksa burada yanlış bir şey mi yapıyorum? Bunun nedeni, the_answer.get() işlevinin sonucu tamamlamak ve almak için işlevini beklemek için kullanıldığını düşündüğümdür.
Teşekkürler.
Benim tahminim çok optimumun olsa bile görmekte olduğunuz davranış standardına göre izin verilen davranış olmasıdır. Şimdi, her şey de bozuldu çünkü 'calculate_the_answer_to_LtUaE' sonunda bir 'dönüş 'yok. – Omnifarious