手动实施反感屏障

时间:2019-05-06 08:57:00

标签: c++ openmp

我需要创建一个反感障碍。这就是我现在得到的。

void Barrier(int id, int num_process){
 local_sense = 1-local_sense;
 bar[id].lock.lock();
    bar[id].count++;
 bar[id].lock.unlock();
 int arrived = bar[id].count; 

 if(arrived == num_process){
    bar[id].lock.unlock();
        bar[id].count = 0;
        bar[id].flag = local_flag;
 }
 else{
    bar[id].lock.unlock();
    while(bar[id].flag != local_sense){};
 }
}

我的任务是在#pragma omp并行内部同步线程,而无需使用#pragma omp屏障。

执行程序似乎并不同步所有线程

0 个答案:

没有答案