Как OpenMP работает с данными, объявленными в параллельном разделе? До C99 я использовал предложение private () для указания локальных данных потока, например,
int i, x;
#pragma omp parallel for private(x)
for (i=0; i<n; i++) {
x=i;
}
Теперь, когда C99 позволяет смешивать данные и код, я предпочитаю объявлять переменные непосредственно перед их использованием. Гарантирует ли объявление данных в рамках цикла, что оно является частным потоком? Например, является ли следующее действительным?
#pragma omp parallel for
for (int i=0; i<n; i++) {
int x=i;
}
Я пытался добавить private (x) на всякий случай, но мой объект компилятора (возможно, поскольку x еще не объявлен).