c++ - 带有 break 语句的并行 OpenMP 循环

标签 c++ multithreading loops openmp

我知道您不能为 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/

相关文章:

c++ - 使用 getline 获取字符串对象

java - 关于线程和进程的一个问题

c++ - 这是带有 shared_ptr 的正确 C++11 双重检查锁定版本吗?

php - 在 PHP 中向项目添加逗号并在末尾添加 "and"

c++ - 谷歌模拟-我可以在同一模拟对象上多次调用EXPECT_CALL吗?

c++ - 以通用方式选择有效的随机枚举值

javascript - 如何循环访问属于类成员的元素以获取数据并将该数据转换为对象?

mysql - Django Mysql循环查询但得到相同的输出

c++ - 未定义基类,但包含其 header

java - 开源线程池库