在一個成員函數,我可以並行使用共享成員變量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