繁体   English   中英

如何为类成员变量定义线程私有变量

[英]How to define threadprivate variables for class member variables

我正在通过OpenMP编写多线程的面向对象的c ++代码。 为了简单和通用起见,我不得不在模板类中定义一些变量和函数。 我想让他们threadprivate利用线程专用变量的持久性功能,并能够在嵌入或调用模板类的其他功能或源文件来使用它们。 但是我收到以下错误:“ ...不是文件,名称空间或块作用域变量 ”我知道我只能对文件,名称空间或块作用域变量使用threadprivate指令,但是我想知道是否还有其他替代方法可以应用类成员的threadprivate指令也是如此。 我的总代码布局如下:

template<typename T> class EntContainer
{
private:
T** empties;
e_NumPointers;
e_nLists;
.
.
.
public:
#pragma omp threadprivate(empties, e_NumPointers, e_nLists)
void function
{
// do some paralle stuff using #pragma omp parallel 
}
}

提前致谢

OpenMP 3.0草案允许在静态类成员上使用threadprivate,但是#pragma omp threadprivate必须出现在包含threadprivate静态类成员的类的定义内,并且必须在词法上优先于所有使用。 资源

使成员成为静态成员,并将#pragma omp threadprivate指令移到其声明的正下方应可修复该错误。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM