future可以通过特殊的provider进行数据的异步访问,实现线程间的通信
// promise example
#include <iostream> // std::cout
#include <functional> // std::ref
#include <thread> // std::thread
#include <future> // std::promise, std::future
void print_int(std::future<int>& fut) {
int x = fut.get();
std::cout << "value: " << x << '\n';
std::system("pause");
}
int main()
{
std::promise<int> prom; // create promise #创建promise
std::future<int> fut = prom.get_future(); // engagement with future #与future绑定
std::thread th1(print_int, std::ref(fut)); // send future to new thread #将future传入promise
prom.set_value(10); // fulfill promise #执行promise
// (synchronizes with getting the future)
th1.join();
return 0;
}