#include<iostream>
#include<thread>
#include<future>
void th1(std::promise<int> &data, std::future<int> &future_data)
{
data.set_value(1);
std::this_thread::sleep_for(std::chrono::seconds(1));
data = std::promise<int>(); //在future没有get之前只能设置一次,要设置多次需要重新新建和关联
future_data = data.get_future();
data.set_value(2);
std::this_thread::sleep_for(std::chrono::seconds(1));
data = std::promise<int>();
future_data = data.get_future();
data.set_value(3);
std::this_thread::sleep_for(std::chrono::seconds(1));
data = std::promise<int>();
future_data = data.get_future();
data.set_value(4);
}
void th2(std::future<int>& future_data)
{
std::this_thread::sleep_for(std::chrono::seconds(3));
std::cout << future_data.get() << std::endl;
}
int main(int argc, char **argv)
{
std::promise<int> data;
std::future<int> future_data = data.get_future();
std::thread t1(th1, std::ref(data), std::ref(future_data)); //std::ref在函数编程中,尽量尝试保证函数执行时,对传入的参数是引用(纯数字不行),而不是拷贝,相当于匿名函数中&使用外部参数
std::thread t2(th2, std::ref(future_data));
std::getchar();
return 0;
}
std::promise
最新推荐文章于 2024-09-12 07:00:00 发布