在openmp部分永远不会结束循环

时间:2016-05-23 07:02:06

标签: c++ openmp

我使用openmp 2.5在c ++中获得了以下代码:

total = 500;
counter = 0;
#pragma omp parallel
{
    while (counter != total) {
        #pragma omp barrier
        #pragma omp for
        for (it = vec.begin(); it < vec.end(); ++it) {
            work(*it);
        }
    }
}

work()中,我通过以下方式增加/减少计数器:

void increase() {
    #pragma omp atomic
    counter++;
}

void decrease() {
    #pragma omp atomic
    counter--;
}

有时循环永远不会结束但是如果我删除并行编译指示代码,它就可以工作。我怀疑我是以错误的方式实施的。我需要一个openmp代码的专家。

0 个答案:

没有答案