OMP使线程等待条件

时间:2018-11-28 18:21:20

标签: c openmp pragma

我必须让一个奇数线程(例如1,3,5,...)等待偶数线程(例如0,2,4,...)在第一个线程之前完成。

我以为我可以使用pragma omp barrier,但是它不能按照我想要的方式工作。

是否有任何方法可以使线程等待条件完成才能使其继续运行?

部分代码:

#pragma omp parallel reduction(+:totalSum) private(i, tn)
{
    tn = omp_get_thread_num();
    int lim = 0;
    #pragma omp for
    for(i = 0; i < 100; i++){
        v[i] = i+1;
        lim = lim + 1;
        partialSum[tn] = partialSum[tn] + v[i];

        if(lim == 20){
            //make odd threads wait for an even thread to finish before they can finish
            totalSum += partialSum[tn]; 
        }
    }
}

0 个答案:

没有答案