Visual C++ 等效于 GCC 实验性并行 for_each?

Posted

技术标签:

【中文标题】Visual C++ 等效于 GCC 实验性并行 for_each?【英文标题】:Visual C++ equivalent to GCC experimental parallel for_each? 【发布时间】:2015-01-30 14:42:13 【问题描述】:

在 GCC 中,并行 for_each 有一个方便的实验性功能,这意味着它在迭代器循环上工作得相当优雅。

我对 VC++ 不太熟悉,但我正在处理一个特定于 Windows 的项目。

在某处是否有直接的 MS 等价物?到目前为止,我的搜索不断受到 .NET for_each、过时线程和偶尔出现的 OpenMP 线程的阻碍(它似乎在拆分迭代器时效率很低)。

使用 VS2013 SP4,并且需要将 3rd 方库保持在绝对最低限度并且没有许可问题(因此我没有使用 TBB)。

【问题讨论】:

【参考方案1】:

你可以试试Microsoft Parallel Patterns Library (PPL)。它有一个parallel_for_each。

【讨论】:

我不知道它存在,奇怪的是它并没有出现在我的搜索中。非常感谢,会看看的。您是否会碰巧知道实现是否有效地拆分了迭代器,或者是否愚蠢地迭代每个任务/线程的整个序列并且只标记每次迭代的实际调用? (OMP 似乎仍然对我有用)。再次感谢。 @ThE_JacO 我还没有确认,但是当我以其他方式戳它时,我发现 ppl 是一个高质量的实现,所以我假设是这样。

以上是关于Visual C++ 等效于 GCC 实验性并行 for_each?的主要内容,如果未能解决你的问题,请参考以下文章

Visual C++ 和 gcc 一样强大吗?

省略号交换机案例Visual Studio等效

c++11(或更低版本)中 gcc __attribute__((unused)) 的 Visual Studio 等效项?

使用 QWT 和 Microsoft Visual C++ 2010 绘制 MatLab 等效图

“数组索引越界”的 Visual Studio 等效错误

线程(c++ 中的并行计算)是不是与优化级别(gcc)不兼容?