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

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

【问题讨论】:

    标签: c++ class static openmp private-members


    【解决方案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 吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-12
    • 1970-01-01
    • 1970-01-01
    • 2013-10-09
    • 2017-06-30
    相关资源
    最近更新 更多