C++:OpenMP 中的私有静态变量

Posted

技术标签:

【中文标题】C++:OpenMP 中的私有静态变量【英文标题】:C++: Private static variables in OpenMP 【发布时间】:2012-06-16 01:08:28 【问题描述】:

如何在 OpenMP 中将静态变量和函数(来自模板化类)设为私有,以便在每个线程中具有不同的值?

【问题讨论】:

【参考方案1】:

根据场景,你应该可以使用:

#pragma omp threadprivate(theVariable) 

有关详细信息,请参阅 OpenMP 中 using Thread-local Storage 上的这篇文章。

【讨论】:

事实上我已经尝试过了。但我得到了一个错误。错误:“SysBase::_dt”在首次使用后声明为“threadprivate” @SamerAfach 您通常不能将静态变量同时用作静态+线程本地。您必须在本地创建一个新线程,然后更新静态(共享)。 感谢您的帮助! :) 还要注意 threadprivate 局部静态变量仅从 OpenMP 3.0 开始支持,这意味着在 Visual C++ 中不支持(如果您在 Windows 上开发或打算稍后移植) @HristoIliev 我如何知道我正在使用的 OpenMP 版本?我实际上将 Ubuntu 与 g++ 一起用于我的程序。我应该给出一些额外的指令来使用 OpenMP 3.0 吗?

以上是关于C++:OpenMP 中的私有静态变量的主要内容,如果未能解决你的问题,请参考以下文章

关于c++中的静态成员变量

C++对象模型:成员变量<一>非静态成员

javascript中用于自己库的静态私有变量

C ++中的私有静态意味着啥[关闭]

编译失败,将静态变量作为私有成员变量的c ++程序[重复]

javascript中的非静态私有变量