C++ boost::dynamic_位集上的并行迭代

C++ boost::dynamic_位集上的并行迭代,c++,boost,parallel-processing,C++,Boost,Parallel Processing,我正在使用这样的代码: std::vector<std::size_t> final_results; std::size_t pos = bitset.find_first(); while(boost::dynamic_bitset<>::npos != pos) { //do some time consuming stuff if(results_are_nice) final_results.push_back(pos); pos = b

我正在使用这样的代码:

std::vector<std::size_t> final_results;
std::size_t pos = bitset.find_first();
while(boost::dynamic_bitset<>::npos != pos)
{
  //do some time consuming stuff

  if(results_are_nice)
    final_results.push_back(pos);

  pos = bitset.find_next(pos);
}
std::向量最终结果;
std::size_t pos=bitset.find_first();
while(boost::dynamic_bitset::npos!=pos)
{
//做一些耗时的事情
如果(结果很好)
最终结果。推回(pos);
pos=位集。查找下一个(pos);
}
我想把这个循环并行化。耗时的东西是一个真正的瓶颈。我知道对于“for-loop”并行化有一些现成的解决方案。但在这里,我需要在访问最终的_结果时进行同步,而boost::dynamic_位集上的迭代要复杂一些


我应该如何进行?迭代整个位集,将真值索引存储在向量中,并在该向量上并行化迭代?

您尝试了什么?你有没有测量到这个循环是一个瓶颈?是的。这是一个瓶颈,因为在一个循环中,作为一个“耗时的东西”,我执行了几个文件操作(只读),这些操作必须指示是否应将“pos”包括在最终结果中。除非使用SSD或RAID,否则并行线程可能不会改善文件操作。磁盘文件的瓶颈几乎总是磁盘。