for循环/ for_each的每个迭代都可以并行完成吗?(C++ 11)

Tre*_*key 10 c++ parallel-processing asynchronous future c++11

我正在遍历结构的向量并单独处理每个结构.
它看起来像这样:

for_each(begin(data),end(data),DoTask);
//assume "data" is std::vector<DataT>  
//assume DoTask is a function that takes a DataT by reference
Run Code Online (Sandbox Code Playgroud)

代码非常慢,因为DoTask连接到特定网站并分析HTML.
什么是加快这个速度的最好方法?
我的目标是同时分析多个DataT.
我对线程很新,但是std :: asyncstd :: future看起来很有前途.

Set*_*gie 9

你可以做这样的事情

for(T& d : data) std::thread(DoTask, d).detach();
Run Code Online (Sandbox Code Playgroud)

或者您可以使用更复杂的东西,如英特尔的线程构建模块和parallel_for(不是名称?)功能.

  • -1这个例子将是完全同步的,因为从`std :: async`创建的`std :: future`的析构函数将被阻塞,此外它不提供worktealing等.应该真的应该使用并发库. (2认同)

Jer*_*ock 6

你在使用GCC吗?最新版本有一个并行版本for_each(请参阅此处了解如何使用它).