OpenMP:是否有一个超时的并行部分

OpenMP: is there a timeout for a parallel section?

本文关键字:并行部 超时 有一个 是否 OpenMP      更新时间:2023-10-16

我在这里遇到了一个问题。有两个函数应该并行执行。在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没有超时