1

我有如下场景:

//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),并且类似私有 (this->val1, this->val2) 的东西也是不可能的。任何人都可以让我知道在这种情况下使用 OpenMP 进行并行化的最佳方法,其中变量是类的一部分并且声明不在应用 OpenMP 编译指示的代码块的直接范围内?

我在 OpenMP 论坛上问过同样的问题 - http://openmp.org/forum/viewtopic.php?f=3&t=886#p3516

谢谢,
萨扬

4

1 回答 1

0

如果我没记错的话,当你声明一个变量 private(var) 时,它所做的只是为该变量创建新空间,它实际上并没有复制它进入 private(var) 语句的值。

话虽这么说,如果您可以使用 private(var) 语句就足够了,您是否不能在 somemethod::abovefunction(x) 调用中本地初始化变量?

于 2010-06-23T12:17:20.800 回答