使用 TBB 并行创建向量
Use TBB to create a vector in parallel
我有一个 vector<int> foo
和一个函数 float bar(int)
。使用 algorithms
库,我可以用
填充 vector<float> quux
transform(foo.begin(), foo.end(), quux.begin(), bar);
我的 foo
函数恰好非常慢,我希望使用 TBB 库跨多个线程并行处理此代码。我本来认为这是一个理想的情况,因为所有操作都是独立的。但是,似乎没有 parallel_transform
算法。我用 parallel_for
算法看到的每个示例都会将数据放回原始数组,但我不能这样做,因为我正在更改类型。
您可以使用对目标的引用来实现它。示例代码:
std::vector<float> quux(foo.size());
parallel_for(size_t(0), foo.size(), [&foo,&quux] (size_t i) {
quux[i] = bar(foo[i]);
});
我有一个 vector<int> foo
和一个函数 float bar(int)
。使用 algorithms
库,我可以用
vector<float> quux
transform(foo.begin(), foo.end(), quux.begin(), bar);
我的 foo
函数恰好非常慢,我希望使用 TBB 库跨多个线程并行处理此代码。我本来认为这是一个理想的情况,因为所有操作都是独立的。但是,似乎没有 parallel_transform
算法。我用 parallel_for
算法看到的每个示例都会将数据放回原始数组,但我不能这样做,因为我正在更改类型。
您可以使用对目标的引用来实现它。示例代码:
std::vector<float> quux(foo.size());
parallel_for(size_t(0), foo.size(), [&foo,&quux] (size_t i) {
quux[i] = bar(foo[i]);
});