OMP заставляет поток ждать условие - PullRequest
0 голосов
/ 28 ноября 2018

Мне нужно заставить нечетную нить (например, 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]; 
        }
    }
}
...