OpenMP:并行部分是否有超时?

OpenMP: is there a timeout for a parallel section?

我在使用 OpenMP 时遇到问题。有两个函数应该并行执行。在 foo() 中有一个循环应被 stop 中断。如您所见,它被分配到另一个 OMP 部分。

密码是:

char stop;
#pragma omp parallel
{
    #pragma omp sections
    {
        #pragma omp section
        {
            foo(&stop);
        }
        #pragma omp section
        {
            bar();
            stop = getch();
        }
   }
}

void foo(char *foo) 
{
     while(*stop != 'q')
     {
        // do stuff
     }
}

现在当我执行该代码时会发生什么:它卡在第一 (foo()) 部分。更具体地说,在给定的循环中——现在是一个无限循环,因为它永远无法切换到 bar 部分,中断条件永远无法调整。

现在解决这个问题的一个简单方法是使 foo() 部分超时。我搜索了互联网,但找不到任何适用的代码。

有人有想法吗?

感谢您的任何建议!

OpenMP:并行部分是否有超时?

答案:没有

OpenMP 没有超时。