std::future<DataType> future;
时间: 2024-08-15 12:10:12 浏览: 53
jackson-datatype-jdk8-2.11.4-API文档-中文版.zip
`std::future<DataType>` 是 C++ 中用于异步编程的一个重要概念。它代表了一个可能在未来某个时间点完成的结果,但目前还未完成。当你发起一个异步操作(如通过 `std::async` 或者 `std::thread`),会得到一个 `std::future` 对象,你可以使用这个对象来查询任务的状态(如是否已完成)、获取结果或捕获异常。
下面是一个简单的示例:
```cpp
#include <iostream>
#include <future>
// 假设我们有一个耗时的操作 function()
int long_running_operation(int x) {
std::this_thread::sleep_for(std::chrono::seconds(2)); // 模拟长时间运行
return x * x;
}
int main() {
// 创建一个异步任务,传入 long_running_operation 函数并计算 5 的平方
std::future<int> future = std::async(std::launch::async, long_running_operation, 5);
// 主线程继续执行,不等待任务完成
std::cout << "Starting main task...\n";
// 使用未来对象检查任务状态
if (future.valid()) { // 如果任务已成功开始
try {
// 获取异步操作的结果
int result = future.get(); // 这里会阻塞直到任务完成
std::cout << "Result: " << result << "\n";
} catch (std::exception& e) {
std::cerr << "Caught exception: " << e.what() << '\n';
}
}
return 0;
}
```
在这个例子中,`future.get()` 方法会在任务完成时返回结果。如果任务还在执行中,`get()` 会阻塞直到结果可用。如果任务抛出了异常,`get()` 也会捕获它。
阅读全文