VS2010并行模式库(PPL)parallel_for_each算法是否支持std::set<>?



尝试以下代码时:

        Concurrency::concurrent_vector<int> results_temp;
        std::set<int > temp;
        Concurrency::parallel_for_each(temp.begin(), temp.end(),[&](int p) {
                results_temp.push_back(p);
        });

我得到以下编译时错误:

1>C:Program Files (x86)Microsoft Visual Studio 10.0VCincludeppl.h(2081): error C2440: '=' : cannot convert from 'const int *' to 'int *'

我已经设法使parallel_for_each与std::deque<>std::list<>std::vector<>std::map<>一起工作。我很好奇如何让它为std::set<>工作,或者为什么不支持它。

为我编译的示例代码没有错误。

我添加了以下内容:

#include <ppl.h>
#include <concurrent_vector.h>

你安装了SP1吗?

如果出于任何原因,没有Concurrency::concurrent_set,则无论如何使用Concurrency::concurrent_map<T, unused_type>

理想情况下,unused_type将以这样的方式填充,即std::pair<T, unused_type>可以空基类优化。测试并分析它。如果是这样,你就差不多完了。

两个四件事

  1. 我知道这只是有点蹩脚
  2. 假设concurrent_map具有std::map语义
  3. concurrent_map使用对的次要假设
  4. 我实际上并不使用PPL(我使用带有并行模式的GNU libgomp)

最新更新