std::promise和std::future
时间: 2023-10-22 10:06:12 浏览: 127
thousandeyes-futures:C ++ std的延续
std::promise和std::future是C++11中引入的用于实现异步编程的两个重要类。
std::promise用于存储一个值或异常,并将其与std::future对象相关联。通过promise,我们可以将一个值或异常传递给future,然后在需要的时候从future中获取这个值或异常。promise通常由生产者线程使用。
std::future是一个轻量级的异步任务句柄,用于获取异步任务的结果。它提供了一种异步获取值的方式,可以用于等待异步任务的完成并获取其结果。future通常由消费者线程使用。
promise和future之间是一种一对一的关系,一个promise可以和一个future关联,而一个future也只能与一个promise关联。
下面是一个简单的示例代码,演示了promise和future的基本用法:
```cpp
#include <iostream>
#include <thread>
#include <future>
void compute_value(std::promise<int>& p) {
// 假设这里是一个耗时的计算过程
int result = 42;
// 将计算结果设置到promise中
p.set_value(result);
}
int main() {
std::promise<int> p;
std::future<int> f = p.get_future();
std::thread t(compute_value, std::ref(p));
// 等待计算结果就绪并获取
int result = f.get();
std::cout << "Result: " << result << std::endl;
t.join();
return 0;
}
```
阅读全文