1
我有一個關於並行循環中的局部值和更新全局變量的問題。TBB:局部和全局結果parallel_for
例如,在僞代碼中:我在一個很長的向量中搜索最大值。我可以做一個循環,這樣的:
int max;
for(i ...) {
if (max < vector[i]) max = vector[i];
}
我可以很容易地使用OpenMP並行化:
int max;
#pragma omp parallel
{
int local_max;
#pragma omp parallel for
for(i ...) {
if (local_max < vector[i]) local_max = vector[i];
}
#pragma omp critical
{
// choose the best solution from all
if (max < local_max) max = local_max; local_max
}
}
我如何可以做同樣的TBB parallel_for
?我不要求精確的代碼,我想只是知道如何在循環,而不是在每次迭代結束時更新全局結果...
(我是新來的TBB)
謝謝,這正是我需要的! –