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 没有超时。
我在使用 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 没有超时。