读书频道 > 网站 > 网页设计 > Visual C++并行编程实战:多核架构下分工与协作的设计模式
2.1.2 parallel_for_each
12-08-13    叶孤城
收藏    我要投稿   
这本书所介绍的并行模式库(Parallel Patterns Library,PPL)实际上是一个模式化的C++模版库,而且作为Visual Studio 2010开发系统的一部分,它已经完全被内置到了这一版本的C++语言中。这意味着你可以像使...立即去当当网订购
下面是一个C++Standard Template Library(STL)版的for_each串行循环示例。 
vector<size_t> inputs = ... 
int workload = ... 
 
for_each(inputs.cbegin(), inputs.cend(), 
[workLoad](size_t i) 

   DoWork(i, workLoad); 
}); 
同样,为了发挥出多核的性能优势,我们用parallel_for_each函数来替代for_each关键字注3。 
parallel_for_each会在循环体内处理容器中的每一个元素。 
vector<size_t> inputs = ... 
int workload = ... 
 
parallel_for_each(inputs.cbegin(), inputs.cend(), 
[workLoad](size_t i) 

      DoWork(i, workLoad); 
}); 
在语法上,parallel_for_each函数与std::for_each基本相同。第一个参数是一个迭代器(iterator),指向操作区间内的第一个元素;第二个参数迭代器则指向该区间内最后一个元素的后一个位置;第三个参数则是一个作用于该区间内每一个元素的函数对象。 
不要忘记,由于各迭代操作之间必须保持彼此独立,因此,每一个循环体只能更新那些传递给它的字段实体。 
由于parallel_for_each方法的执行顺序是不确定的(这与for_each串行循环不同),因此这里的输入参数并非总能按照既定的顺序来处理
点击复制链接 与好友分享!回本站首页
分享到: 更多
您对本文章有什么意见或着疑问吗?请到论坛讨论您的关注和建议是我们前行的参考和动力  
上一篇:1.3 功能
下一篇:1.5 小结
相关文章
图文推荐
JavaScript网页动画设
1.9 响应式
1.8 登陆页式
1.7 主题式
排行
热门
文章
下载
读书

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训
版权所有: 红黑联盟--致力于做最好的IT技术学习网站