当然,因为async构造函数中fn为可调用对象,所以函数指针、函数对象、lambda函数、bind绑定等都可以使用,推荐使用lambda函数,快捷方便。 (参考网站:CSDN、cppreference.com、cplusplus.com等) (参考书目:《深入理解C++11》、《深入应用C++11》等)
在它之上高一层的是std::packaged_task和std::promise,他们内部都有future以便访问异步操作结果,std::packaged_task包装的是一个异步操作,而std::promise包装的是一个值,都是为了方便异步操作的,因为有时我需要获取线程中的某个值,这时就用std::promise,而有时我需要获一个异步操作的返回值,这时就...
std::future是通过std::promise::get_future获取到的,自己构造出来的无效 如果promise直到销毁时,都未设置过任何值,则promise会在析构时自动设置为std::future_error,这会造成std::future.get抛出std::future_error异常。 1#include <iostream>//std::cout, std::endl2#include <thread>//std::thread3#includ...
cplusplus.com TUTORIALS REFERENCE ARTICLES FORUM sign up log in[Legacy version]C++Tutorials Reference Articles Forum Forum Beginners Windows Programming UNIX/Linux Programming General C++ Programming Lounge JobsForum General C++ Programming class + std::async not working together....
// reference: http://www.cplusplus.com/reference/future/async/ int test_async_1() { auto is_prime = [](int x) { std::cout << "Calculating. Please, wait...\n"; for (int i = 2; i < x; ++i) if (x%i == 0) return false; ...