C ++中与OS无关的并行循环

时间:2016-12-01 19:10:04

标签: c++ multithreading parallel-processing operating-system multiprocessing

目标

我正在尝试在C ++中创建一个多线程for循环,类似于

std::vector<int> X;
for_parallel ( int& i : X )
{
  // The code in here will be run in parallel for each 'i'
}

我的困惑

我迷路了,因为似乎有很多可能的方法来做这样的事情,有些似乎是系统特定的。例如,Parallel Patterns Library是由Microsoft构建的,因此我希望它最终只能在Windows上运行。我仍然试图在我的Mac OS上通过自制程序安装它,但我失败了所以我想它确实只适用于Windows。我正在寻求一些帮助来弄清楚我应该使用什么方法。

问题

我打算在MAC OS X和Linux上运行我的代码,所以我需要一个适用于这两种操作系统的解决方案(或者很容易修改和重新编译)。你能否建议一个可以帮助我的软件包(并最终提供一个简单的例子来说明这样的&#34; for_parallel&#34;循环)?

2 个答案:

答案 0 :(得分:1)

我会认真考虑c++11,它非常便携,请查看std::thread参考。

我在win32 / win64,linux和macOS上使用过这个库 - 你可能无法获得更多便携性。

答案 1 :(得分:1)

OpenMP或英特尔TBB。它们可以跨平台工作并具有并行功能。