如何使用OpenMP使线程以相反的顺序写数字?

时间:2018-09-24 12:59:10

标签: c++ openmp

所以我有一个任务。我需要让8个线程使它们以相反的顺序写数字。我知道如何使它们以自然顺序书写,但对于相反的情况确实感到困惑。希望任何人都能帮助我!

1 个答案:

答案 0 :(得分:1)

我不太了解您要问的目的,但这行得通

 #include "omp.h"
 #include <iostream>
 using namespace std;
 int main()
 {

#pragma omp parallel
{
      int nthreads = omp_get_num_threads();
      for(int i=nthreads-1; i>=0; i--)
      {
            #pragma omp barrier
            {
                  if(i==omp_get_thread_num())
                  {
                        #pragma omp critical
                        cout << "I am thread "<< i <<endl;
                  }
            }
      }
}
}
它输出

8个线程

I am thread 7
I am thread 6
I am thread 5
I am thread 4
I am thread 3
I am thread 2
I am thread 1
I am thread 0