使用openmp为每个线程创建一个变量static private

时间:2014-12-03 10:24:11

标签: static-members private-members openmp

我需要为每个线程设置t静态,我该怎么做?我尝试了这个,但t并非每个线程都是静态的。

#pragma omp Parallel
{
    traceRays();
}
...
...
void traceRays()
{
    static float t = 1;
}

2 个答案:

答案 0 :(得分:1)

如果静态变量未在并行区域中声明,那么每次尝试在并行区域中定义时都使用:#omp parallel private(t)

答案 1 :(得分:0)

您只需制作t threadprivate:

即可
void traceRays()
{
    static float t = 1;
    #pragma omp threadprivate(t)
}