使用lambda表达式并行减少

时间:2016-10-23 06:19:02

标签: c++ lambda tbb

我目前正在开发一个以数组,大小,低和高为参数的函数

parllelCount(int *src, int size, int low, int high)

该函数返回源数组中属于低和高范围的值的数量。

我有以下函数使用lambda表达式使用并行reduce,但是我无法弄清楚应该如何实现paralle_reduce中的combine参数(在代码片段中注释)

int parallelCount(int *src, int size, int low, int high)
{
    int counter = parallel_reduce(blocked_range<int>(0, size),
                                  int(0),
                                  [&](blocked_range<int> r, int counter)->int{
                                      for(int i = r.begin(); i < r.end(); i++){
                                          if(low <= src[i] && src[i] <= high){
                                              counter++;
                                          }
                                      }
                                      return counter;
                                  },
                                  //[](){}

    );
    return counter;
}

1 个答案:

答案 0 :(得分:2)

combine可能只是将工人计算出的结果加起来,所以

[](int a, int b) { return a + b; }

应该有效