是否始终在OpenMP中共享this
指针?
编译器不会抱怨以下代码,尽管default(none)
:
#pragma omp parallel for default(none), shared(n)
for ( SInt i = 0; i < n; ++i )
{
f( i, this ); // f is some function.
}
答案 0 :(得分:2)
OpenMP标准定义了代码中引用的变量的数据共享属性规则。无论如何,根据C ++标准草案(n3242 9.3.2)this
不是变量而是 prvalue表达式(强调我的):
在非静态(9.3)成员函数的主体中,这是关键字 一个prvalue表达式,其值是对象的地址 调用该函数。这个类型在一个成员函数中 X类是X *。如果成员函数声明为const,则为 这是const X *,如果成员函数声明为volatile,则 这个类型是volatile X *,如果声明了成员函数 const volatile,这个类型是const volatile X *。