遇见PPL:C++ 的并行和异步

2012 年 7 月 25 日

并行计算正弦值

假设我们有一个数组,里面包含一组随机生成的浮点数,现在要计算每个浮点数对应的正弦值,如果你看过我的《遇见C++ Lambda》,你可能会想到用for_each 函数,如代码1 所示。为了可以把数组里的浮点数替换成对应的正弦值,我们需要把Lambda 的参数声明为引用,如果你想保留那些浮点数,可以创建一个新的数组存放计算结果。

代码 1

值得提醒的是,这里使用begin 和end 两个函数分别获取数组的起止位置,这是C++ 11 的推荐写法。此前,我们使用STL 容器的begin 和end 两个成员函数分别获取起止位置,但这种做法无法覆盖C 风格数组;如今,C++ 11 通过begin 和end 两个函数把获取C 风格数组和STL 容器的起止位置的写法统一起来,不难想象,遵循新的写法可以提高代码的一致性。

STL 提供的 for_each 函数是串行执行的,如果你想充分利用多核的优势,可以考虑换用 PPL(Parallel Patterns Library)提供的 parallel_for_each 函数,整个改造过程只需三步:

  1. #include <ppl.h>
  2. using namespace concurrency;
  3. 把 for_each 改为 parallel_for_each,如代码 2 所示

原文链接:【 https://www.infoq.cn/article/meet-ppl-cpp-parallel-asynchronous 】。未经作者许可,禁止转载。

登录后可解锁全站优质内容

免费畅享技术公开课、顶尖技术团队访谈、一线互联网大厂技术实践

文章
视频
电子书
研究报告
立即登录
2012 年 7 月 25 日 00:00 15796

评论

发布
暂无评论
发现更多内容

【6月】本月读书学到了什么

Neco.W

读书感悟 阅读量

架构师训练营:第四周作业

zcj

极客大学架构师训练营

架构师训练营 第4周学习总结

Glowry

极客大学架构师训练营

架构师训练营总结-20200627

caibird1984

极客大学架构师训练营

戴尔Latitude 9510 雅典娜计划标准的英特尔移动超能版笔记本

飞天鱼2017

Elasticsearch从入门到放弃:分词器初印象

Jackey

elasticsearch

【架构师训练营 - 周总结 -4】互联网系统架构演进

小动物

总结 极客大学架构师训练营 第四周

架构师训练营第四周总结

suke

极客大学架构师训练营

ARTS - Week Six

shepherd

JavaScript algorithm

极客大学算法训练营第一课

落曦

架构师是怎样炼成的 04-1互联网分布式系统架构演化

闷骚程序员

极客大学架构师训练营

架构师训练营第四周作业

Melo

漫画:15张图,帮你看懂布隆算法

Java小咖秀

算法 面试题 布隆过滤器

Golang中的Interface(接口),全面解析

Eriol

golang 接口 interface

架构师训练营 Week04 学习心得

极客大学架构师训练营

「架构师训练营」第 4 周 学习总结

guoguo 👻

极客大学架构师训练营

一张PDF了解JDK9 GC调优秘籍-附PDF下载

程序那些事

性能调优 GC JDK9 cheatsheet 秘籍

极客时间架构师训练营 - week4 - 作业 1

jjn0703

极客大学架构师训练营

Week4-Homework

架构师训练营 第4周作业

Glowry

极客大学架构师训练营

计算机操作系统基础(七)---作业管理之死锁

书旅

php laravel 线程 操作系统 进程

漫画:对象是如何被找到的?句柄 OR 直接指针?

王磊

Java Java 面试

企业级业务架构设计读书总结

hiqian

架构师训练营第四周作业

W_T

消息队列(四)如何处理消息丢失的问题?

奈何花开

Java MQ 消息队列

使用 Python 制作酷炫多彩的 Jenkins 插件词云图

donghui2020

jenkins wordcloud

万文长字JVM总结,面试必备

java金融

Java CMS JVM 垃圾回收

Python多重继承问题之MRO和C3算法

王坤祥

Python MRO C3算法 多继承

架构师训练营作业-20200627

caibird1984

极客大学架构师训练营

聊聊Hystrix中的命令模式

老胡爱分享

Java 设计模式 Java 面试 命令模式

系统架构的一些思考

jason

众安黑客马拉松大赛总决赛-InfoQ小编探班

众安黑客马拉松大赛总决赛-InfoQ小编探班

遇见PPL:C++ 的并行和异步-InfoQ