Я играл с openmp и использовал барьерную конструкцию для выполнения простого кода:
#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 и получил такой результат: Вывод вышеуказанного кода
На выходе до барьера были выполнены 4 потока, но после барьера выполняется только один поток 4 раза, но в соответствии с барьером после барьера также должны выполняться 4 различных потока.Шаг .Может ли кто-нибудь помочь мне решить эту проблему.Заранее спасибо.