在成员函数中,我可以像这样使用共享成员变量int *x
进行并行化:
#pragma omp parallel for default(shared)
for(int i=0;i<size;i++) {
x[i]=i;
}
但是如果我尝试
#pragma omp parallel for default(none) shared(x,size)
for(int i=0;i<size;i++) {
x[i]=i;
}
我遇到了错误:
'obj::x' is not a variable in clause 'shared'
。
我更喜欢第二个版本,因为它宣布了它正在使用的共享变量,提醒我确保没有竞争条件或类似问题。
OpenMP 为什么声称obj::x
不是一个变量?
#pragma omp parallel for default(none) shared(this->x,size)
会出现错误error: expected unqualified-id before 'this'
。 - Riko Jacob