我有以下情况:
//class somemethod contains the member variables(declaration) val1 and val2,
//and is defined in somemethod.h.
#include <somemethod.h>
void abovefunction(x)
{
//code that could be made parallel if val1 and val2 is declared private()
}
//abovefunction() is in somemethod.cpp, where the methods of class somemethod
//are described
该函数稍后由某个对象调用,如obj.abovefunction(x)。由于val1和val2在somemethod.h中被声明/初始化,所以我不能将它们用作私有(val1,val2),而像private(this-&gt; val1,this-&gt; val2)这样的东西也是不可能的。任何人都可以告诉我在这种情况下使用OpenMP进行并行化的最佳方法,其中变量是类的一部分,并且声明不在应用OpenMP pragma的代码块的直接范围内吗?
我在OpenMP论坛上提出了同样的问题 - http://openmp.org/forum/viewtopic.php?f=3&t=886#p3516
谢谢,
萨扬
答案 0 :(得分:0)
如果我没有弄错,当你声明变量private(var)时,它所做的就是为该变量创建新的空间,并且它实际上并不复制它输入私有(var)语句的值。 / p>
这就是说,如果你能够使用private(var)语句,你能不能在somemethod :: abovefunction(x)调用中本地初始化变量吗?