c++ future
时间: 2024-05-25 13:07:52 浏览: 76
C++11 引入了 std::future 用于表示异步操作的结果。std::future 对象可以用来获取异步操作的结果或者等待异步操作的完成。
当我们需要执行一个耗时的操作时,如果在主线程中执行,会阻塞主线程导致用户无法进行其他操作,为了避免这种情况,我们可以使用 std::async 来创建一个异步任务,std::async 函数会立即返回一个 std::future 对象,可以通过该对象来获取异步任务的执行结果或者等待异步任务的完成。
例如,下面的代码展示了如何使用 std::async 创建一个异步任务并获取结果:
```cpp
#include <iostream>
#include <future>
int main()
{
std::future<int> result = std::async([](){
// 模拟耗时操作
std::this_thread::sleep_for(std::chrono::seconds(2));
return 42;
});
// 获取异步任务的结果
int res = result.get();
std::cout << "The result is " << res << std::endl;
return 0;
}
```
上述代码中,通过 std::async 创建一个 lambda 表达式作为异步任务,该异步任务会休眠2秒钟后返回值 42。通过调用 std::future 的 get() 函数可以获取异步任务的结果。
阅读全文
相关推荐
















