В функции-члене я могу распараллелить, используя переменную общего члена 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
не являетсяПеременная?