我在这里遇到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()
部分。我搜索了互联网,但无法找到任何适用的代码。
有人有想法吗?
感谢您的任何建议!
答案 0 :(得分:1)
OpenMP:并行部分是否超时?
答案:不。
OpenMP没有超时。