C++ std::async 函数:异步执行函数的利器
std::async 是一个 C++11 中引入的函数模板,用于异步执行函数或函数对象,并返回一个 std::future 对象,用于获取异步操作的结果。
std::async 的语法如下:
template <class Fn, class... Args>
std::future<typename std::result_of<Fn(Args...)>::type>
async(Fn&& fn, Args&&... args);
其中,Fn 是一个可调用对象(函数、函数指针、函数对象等),Args 是 Fn 执行所需的参数。
std::async 的返回值是一个 std::future 对象,表示一个异步操作的结果。可以通过该对象的成员函数来获取异步操作的结果,比如 get() 函数。
std::async 的调用会创建一个新的线程或使用线程池中的线程来执行函数 fn,并返回一个 std::future 对象。该异步操作的执行时间取决于系统的线程调度和硬件性能。
示例:
#include <iostream>
#include <future>
int foo(int x) {
return x * 2;
}
int main() {
std::future<int> result = std::async(foo, 5);
std::cout << 'Async operation started.' << std::endl;
// 做一些其他的事情...
int res = result.get(); // 获取异步操作的结果
std::cout << 'Result: ' << res << std::endl;
return 0;
}
上述代码中,通过 std::async 异步执行 foo 函数,并传入参数 5。然后,通过 result.get() 获取异步操作的结果,并打印出来。
需要注意的是,std::async 的行为取决于编译器和系统的实现。它可能在一个新的线程中执行函数,也可能使用线程池中的线程执行函数。
原文地址: https://www.cveoy.top/t/topic/pRae 著作权归作者所有。请勿转载和采集!