我有parallel for
一个 C++ 程序,它必须循环到一定数量的迭代。每次迭代都会为算法计算一个可能的解决方案,一旦找到有效的解决方案,我想退出循环(如果完成了一些额外的迭代就可以了)。我知道迭代次数应该从头开始固定parallel for
,但是由于我没有在下面的代码中增加迭代次数,是否可以保证线程在继续当前迭代之前检查条件?
void fun()
{
int max_its = 100;
#pragma omp parallel for schedule(dynamic, 1)
for(int t = 0; t < max_its; ++t)
{
...
if(some condition)
max_its = t; // valid to make threads exit the for?
}
}