Да, локальные переменные автоматически становятся закрытыми.
Причина существования предложения private
заключается в том, что вам не нужно менять код .
Единственный способ распараллелить следующий код без частного предложения
int i,j;
#pragma omp parallel for private(j)
for(i = 0; i < n; i++) {
for(j = 0; j < n; j++) {
//do something
}
}
- это изменить код.Например, вот так:
int i
#pragma omp parallel for
for(i = 0; i < n; i++) {
int j;
for(j = 0; j < n; j++) {
//do something
}
}
Это совершенно правильный код C89 / C90, но одной из целей OpenMP не является изменение кода, кроме добавления операторов pragma
, которые можно включить или отключить при компиляции.время.