TBB には、開始するのに非常に役立つヘルプ リファレンス ドキュメントがあります。ドキュメントforを使用parallel_for
すると、サンプルを parallel_for を使用するように変換するのは非常に簡単です。以下はサンプルコードです。100%ではありませんが、ご想像にお任せします。上記のリンクには、さらに興味深い機能の例もいくつか含まれています。
#include <tbb/parallel_for.h>
#include <tbb/atomic.h>
#include <iostream>
#include <vector>
/**
* To be used with tbb::parallel_for, this increments count
* if the value at the supplied index is zero.
*/
class ZeroCounter
{
public:
ZeroCounter(std::vector<int> * vec, tbb::atomic<int> * count) :
vec(vec),
count(count)
{ }
void operator()(int index) const
{
if((*vec)[index] == 0)
++(*count);
}
std::vector<int> * vec;
tbb::atomic<int> * count;
};
int main()
{
// Create a vector and fill it with sample values
std::vector<int> a;
a.push_back(0);
a.push_back(3);
a.push_back(0);
// Counter to track the number of zeroes
tbb::atomic<int> count;
count = 0;
// Create our function object and execute the parallel_for
ZeroCounter counter(&a, &count);
tbb::parallel_for(size_t(0), a.size(), counter);
std::cout << count << std::endl;
}