C++ 如何使用OpenMP让线程以相反的顺序写入数字?
所以我有一个任务。我需要做8个线程,让他们写他们的数字在相反的顺序。我知道如何让他们按照自然的顺序写作,但我真的对相反的顺序感到困惑。希望有人能帮助我 我真的不明白你问的目的,但这是有效的C++ 如何使用OpenMP让线程以相反的顺序写入数字?,c++,openmp,C++,Openmp,所以我有一个任务。我需要做8个线程,让他们写他们的数字在相反的顺序。我知道如何让他们按照自然的顺序写作,但我真的对相反的顺序感到困惑。希望有人能帮助我 我真的不明白你问的目的,但这是有效的 #include "omp.h" #include <iostream> using namespace std; int main() { #pragma omp parallel { int nthreads = omp_get_num_threads();
#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;
}
}
}
}
}
那么请至少按自然顺序显示代码。请注意:如果您需要线程按特定顺序执行其工作,您应该重新考虑是否确实需要单独的线程。我想这只是一个练习,虽然这是一个愚蠢的练习,但你需要展示一些代码。你说“我知道如何让他们按自然顺序写作”。你至少可以显示代码。展示你尝试过做的事情。为什么需要相反顺序的线程?我不会对算法的最终状态的要求感到惊讶,但是一个具体的例子会有所帮助。我真的不认为这是正确的(除了它与可访问的线程数有关),你能解释一下吗?谢谢!思想障碍应该以某种方式使用,但不知道如何使用。我甚至不知道这个问题,所以评估它是否正确只能由Peltatum完成。也许你认为“pragma omp critical”太过分了。你可能是对的,这是过度保护。。。
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