设为首页 加入收藏

TOP

2.1.2 parallel_for_each
2013-10-07 15:22:17 来源: 作者: 【 】 浏览:69
Tags:2.1.2 parallel_for_each

2.1.2   parallel_for_each

下面是一个C++(www.cppentry.com)Standard Template Library(STL)版的for_each串行循环示例。

  1. vector<size_t> inputs = ...  
  2. int workload = ...  
  3.  
  4. for_each(inputs.cbegin(), inputs.cend(),  
  5. [workLoad](size_t i)  
  6. {  
  7.    DoWork(i, workLoad);  
  8. }); 

同样,为了发挥出多核的性能优势,我们用parallel_for_each函数来替代for_each关键字注3。

parallel_for_each会在循环体内处理容器中的每一个元素。

  1. vector<size_t> inputs = ...  
  2. int workload = ...  
  3.  
  4. parallel_for_each(inputs.cbegin(), inputs.cend(),  
  5. [workLoad](size_t i)  
  6. {  
  7.       DoWork(i, workLoad);  
  8. }); 

在语法上,parallel_for_each函数与std::for_each基本相同。第一个参数是一个迭代器(iterator),指向操作区间内的第一个元素;第二个参数迭代器则指向该区间内最后一个元素的后一个位置;第三个参数则是一个作用于该区间内每一个元素的函数对象。

不要忘记,由于各迭代操作之间必须保持彼此独立,因此,每一个循环体只能更新那些传递给它的字段实体。

由于parallel_for_each方法的执行顺序是不确定的(这与for_each串行循环不同),因此这里的输入参数并非总能按照既定的顺序来处理。

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇2.2.2 parallel_for_each版的Cred.. 下一篇2.3.3 小型循环体的特殊处理

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: