ネタ元 → 無駄に並列化してみる
まけるもんかぁ! なTBB版。
#include <iostream>
#include <tbb/tbb.h>
int main() {
const int N = 1000;
std::cout
<< tbb::parallel_reduce(tbb::blocked_range<int>(0,N+1), 0,
// 部分的に積算
[](tbb::blocked_range<int>& range, int count) -> int {
for ( int i = range.begin(); i != range.end(); ++i ) {
int n = i;
do {
if ( n % 10 == 0 ) ++count;
n /= 10;
} while ( n > 0 );
}
return count;
},
// んでもってreduce
[](int x, int y) { return x+y; })
<< std::endl;
}