std::promise 和 std::future
简介
std::promise 和 std::future 是 C++ 进行单向数据传递的一种方式。std::promise 是数据的输入端,std::future 是数据的输出端
使用
在线程1中创建一个std::promise对象
std::promise<int> promise;
线程1之前从promiseObj获取std::future对象
std::future<int> future = promise.get_future();
线程1将promiseObj传递给线程2,线程2执行操作后对要传递的值赋值
promise.set_value(45);
线程1可以获取到线程2设置的值,若此时线程2还没有对该值进行设置,那么这个调用将会阻塞,直到线程2在promise对象中对该值进行设置
int val = future.get();
示例
#include <iostream>
#include <thread>
#include <future>
#include <chrono>
int main(int argc, char * argv[])
{
std::promise<int>promise = std::promise<int>();
std::thread t1 = std::thread([&promise] {
std::cout << "thread running\n";
std::this_thread::sleep_for(std::chrono::seconds(1));
// 写入数据,这会唤醒正在等待数据的线程
promise.set_value(