Почему у меня разные значения i
в main
и foo
?
Вот мой пример кода:
#include<stdio.h>
#include<omp.h>
double a;
int i;
int j;
int nr_threads;
void foo()
{
printf("foo::i: \t%d\n", i);
}
int main()
{
puts("hejka");
a = 0;
nr_threads = omp_get_num_threads();
printf("Threads: %d\n", nr_threads);
omp_set_num_threads(7);
#pragma omp parallel private(i,j) shared(a)
{
#pragma omp single
{
nr_threads = omp_get_num_threads();
printf("Threads: %d\n", nr_threads);
}
#pragma omp for reduction(+:a)
for(i=0;i<10;i++)
{
printf("main::i:\t%d\n", i);
foo();
}
}
printf("a: %lf\n",a);
printf("i: %d\n",i);
printf("j: %d\n",j);
return 0;
}