Tôi đang thử nghiệm về chức năng std :: async với mã từ http://www.justsoftwaresolutions.co.uk/threading/multithreading-in-c++0x-part-8-futures-and-promises.htmlchức năng không đồng bộ gọi 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);
tôi cần phải gọi the_answer.get() để gọi calculate_the_answer_to_LtUaE() và nhận được Aaa in trên màn hình. Nếu tôi nhận xét ra dòng the_answer.get(), tôi sẽ không nhận được bất cứ điều gì in. Đây có phải là hành vi dự định của std :: async function hay tôi đang làm điều gì sai ở đây? Điều này là do tôi nghĩ the_answer.get() được sử dụng để chờ cho hàm hoàn thành và để lấy kết quả.
Cảm ơn.
tôi đoán là hành vi mà bạn đang nhìn thấy là hành vi cho phép theo tiêu chuẩn, mặc dù nó rất phụ tối ưu. Bây giờ, toàn bộ điều này cũng bị hỏng vì bạn không có 'return' ở cuối' calculate_the_answer_to_LtUaE'. – Omnifarious