我一直在玩openmp,并使用barrier结构执行简单的代码:
#include<stdio.h>
#include<omp.h>
int main() {
int i = 0;
int x[100];
int tid;
int y[100];
int z[100];
for(i=0;i<10;i++) x[i]==i;
#pragma omp parallel
{
tid = omp_get_thread_num();
y[tid]==x[tid]*2;
printf("%d\n",tid);
#pragma omp barrier
printf("After Barrier%d\n",tid);
}
}
我已经在MacOS上执行了这段代码,并得到了这样的结果: The output of the above code
在直到屏障的输出中,执行了4个线程,但是在屏障之后,仅一个线程被执行了4次,但是根据屏障之后的屏障,也应由4个不同的线程执行该步骤。谁能帮我解决这个问题。 预先谢谢你。