在一个成员函数,我可以并行使用共享成员变量int *x
这样为什么不允许在OpenMP中共享类成员变量x(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
不是一个变量?
你试过这个 - > x?你也使用什么编译器? – Beanz 2011-01-06 16:26:05
编译器是g ++ 4.4。尝试'#pragma omp parallel for default(none)shared(this-> x,size)'给出错误'error:expected'在'this'之前的非限定id'' – 2011-01-06 20:18:07