OpenMP和C ++:this指针

4

this指针在OpenMP中是否总是共享的?

尽管使用了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个回答

2
OpenMP标准为您的代码中引用的变量定义了数据共享属性规则。然而,根据C++标准草案(n3242 9.3.2),this不是一个变量,而是一个prvalue表达式(强调我的):
在非静态(9.3)成员函数的主体中,“关键字this是一个prvalue表达式”,其值是调用该函数的对象的地址。类X的成员函数中this的类型是X*。如果成员函数被声明为const,则this的类型为const X*;如果成员函数被声明为volatile,则this的类型为volatile X*;如果成员函数被声明为const volatile,则this的类型为const volatile X*。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接