这里有几个完整的例子,一个使用parallel_for,另一个使用parallel_for_each。
更新2014-04-12:这些显示了我认为是现在使用TBB的漂亮老式的方式;我添加了一个separate answer使用parallel_for与C 11 lambda。
#include "tbb/blocked_range.h"
#include "tbb/parallel_for.h"
#include "tbb/task_scheduler_init.h"
#include
#include
struct mytask {
mytask(size_t n)
:_n(n)
{}
void operator()() {
for (int i=0;i<1000000;++i) {} // Deliberately run slow
std::cerr << "[" << _n << "]";
}
size_t _n;
};
struct executor
{
executor(std::vector& t)
:_tasks(t)
{}
executor(executor& e,tbb::split)
:_tasks(e._tasks)
{}
void operator()(const tbb::blocked_range& r) const {
for (s