c++ future使用
时间: 2023-09-02 18:11:38 浏览: 164
Effective.Modern.C++.pdf
5星 · 资源好评率100%
C++ 的 `std::future` 是一种异步编程的工具,可以方便地处理异步操作的结果。使用 `std::future` 时,可以在一个线程中启动一些异步操作,并在另一个线程中等待这些操作的结果。
下面是一个简单的例子:
```c++
#include <iostream>
#include <future>
#include <chrono>
int main()
{
// 启动一个异步操作
std::future<int> fut = std::async(std::launch::async, []() {
std::this_thread::sleep_for(std::chrono::seconds(2));
return 42;
});
// 在主线程中等待异步操作的结果
std::cout << "Waiting..." << std::endl;
std::future_status status;
do {
status = fut.wait_for(std::chrono::seconds(1));
if (status == std::future_status::timeout) {
std::cout << "Still waiting..." << std::endl;
}
} while (status != std::future_status::ready);
// 输出异步操作的结果
std::cout << "Result: " << fut.get() << std::endl;
return 0;
}
```
在这个例子中,我们使用 `std::async` 函数启动了一个异步操作,该操作会在2秒后返回整数值 42。然后在主线程中,我们使用 `std::future` 对象 `fut` 等待这个异步操作的结果,同时每隔1秒输出一次状态信息。最后输出异步操作的结果。
需要注意的是,`std::future` 对象只能获取一次异步操作的结果。如果需要多次获取,可以使用 `std::shared_future` 对象来共享结果。
阅读全文