一 std::async
template< class Function, class... Args>
std::future<std::result_of_t<std::decay_t<Function>(std::decay_t<Args>...)>>
async( Function&& f, Args&&... args );
std::async返回一个future对象,可通过get方法异步获取执行结果,如下所示:
#include <iostream>
#include <string>
#include <future>
std::string helloFunction(const std::string& s) {
return "Hello C++11 from " + s + ".";
}
class HelloFunctionObject {
public:
std::string operator()(const std::string& s) const {
return "Hello C++11 from " + s + ".";
}
};
int main() {
// 带函数的future
auto futureFunction = std::async(helloFunction, "function");
// 带函数对象的future
HelloFunctionObject helloFunctionObject;
auto futureFunctionObject = std::async(helloFunctionObject, "function obj
C++11中std::async的并行计算实践与性能测试

本文详细介绍了C++11中的std::async函数,展示了如何通过它实现异步计算,并给出了一个并行计算内积的示例。在主程序中,通过std::async将大任务拆分为四个子任务并行计算,然后将结果合并。同时,文章还提供了性能测试结果,比较了并行计算与串行计算的时间消耗。测试表明,std::async可以有效优化计算速度,但在国产和Intel环境下,性能提升并不显著,且国产环境可能由于库调用问题运行稍慢。
最低0.47元/天 解锁文章
888

被折叠的 条评论
为什么被折叠?



