OpenMP和C ++:这个指针

时间:2014-07-15 15:58:20

标签: c++ openmp

是否始终在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.
}

1 个答案:

答案 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 *。