我知道您不能为 OpenMP 循环使用 break 语句,但我想知道是否有任何解决方法,同时仍然受益于并行性。基本上我有'for'循环,它遍历一个大 vector 的元素,寻找一个满足特定条件的元素。但是只有一个元素可以满足条件,所以一旦找到,我们就可以跳出循环,提前致谢
for(int i = 0; i <= 100000; ++i)
{
if(element[i] ...)
{
....
break;
}
}
最佳答案
查看此片段:
volatile bool flag=false;
#pragma omp parallel for shared(flag)
for(int i=0; i<=100000; ++i)
{
if(flag) continue;
if(element[i] ...)
{
...
flag=true;
}
}
这种情况更适合pthread。
关于c++ - 带有 break 语句的并行 OpenMP 循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9793791/