首页 > 解决方案 > 如何使用 OpenMP 让线程以相反的顺序写入它们的数字?

问题描述

所以我有一个任务。我需要制作 8 个线程,让它们以相反的顺序写出它们的数字。我知道如何让它们以自然顺序书写,但对相反的顺序感到非常困惑。希望任何人都可以帮助我!

标签: c++openmp

解决方案


我真的不明白你问的目的,但这有效

 #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

推荐阅读