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还没有被声明)。
for
循环。 - Christoph{...}
块)的开头声明任何变量。 - Juliano