std::future() 是什么,怎么使用
时间: 2024-03-28 15:42:15 浏览: 94
`std::future`是C++11标准库中提供的一种异步编程机制,用于获取异步操作的结果。它包装了一个异步操作的结果,并提供了一种等待结果并获取结果的方法。
使用`std::future`的一般步骤如下:
1. 创建一个异步任务,并将其封装到`std::future`对象中。
2. 在需要异步操作的结果时,调用`std::future::get()`方法等待异步操作的完成并获取结果。
3. 对`std::future`对象进行管理,例如检查异步操作是否完成、取消异步操作、获取异步操作的状态等。
以下是使用`std::future`的示例代码:
```c++
#include <iostream>
#include <future>
int main() {
// 创建一个异步任务
std::future<int> fut = std::async(std::launch::async, []() {
std::this_thread::sleep_for(std::chrono::seconds(1));
return 42;
});
// 等待异步任务完成并获取结果
int result = fut.get();
std::cout << "The result is: " << result << std::endl;
return 0;
}
```
在上述示例代码中,我们创建了一个异步任务,该任务会在1秒后返回值42。我们将该异步任务封装到`std::future`对象中,并使用`std::future::get()`方法等待异步任务完成并获取结果。最后,我们输出获取到的结果。
需要注意的是,`std::future`对象只能获取一次异步操作的结果。如果需要多次获取结果,可以使用`std::shared_future`对象。此外,如果需要在异步任务完成前取消任务,可以使用`std::future::wait_for()`或`std::future::wait_until()`方法等待一段时间,并在超时后取消任务。
阅读全文