making a variable static private to each thread us

2019-09-01 06:27发布

问题:

I need to make t static to each thread, how can I do that? I tried this but t is not static private to each thread.

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

回答1:

if the static variable is not declared in the parallel region, then everytime you attempt to define in the parallel region use: #omp parallel private(t)



回答2:

You can do it by just making t threadprivate:

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