0

我应该使用什么#pragma 指令来实现这一点:

for(// This for-loop has to be executed sequentially)
{
    for(// This for loop can be executed in parallel)
    {
        // Do work.
        // update shared variable
    }
}

据我了解,如果我这样做:

for(// This for-loop has to be executed sequentially)
{
    #pragma omp parallel for
    for(// This for loop can be executed in parallel)
    {
        // Do work.
        #pragma omp atomic
        // update shared variable
    }
}

然后在每个外部循环迭代中都会创建新线程,这并不理想。但如果我做类似的事情:

#pragma omp parallel
for(// This for-loop has to be executed sequentially)
{
    #pragma omp for
    for(// This for loop can be executed in parallel)
    {
        // Do work.
        #pragma omp atomic
        // update shared variable
    }
}

那么每个线程都会执行外循环吗?那么我怎样才能只创建一次线程并在每次顺序迭代中重用它们呢?

4

0 回答 0