可循环/的for_each的每一次迭代并行完成? (C ++ 11) [英] Can each Iteration of a for loop/for_each be done in parallel? (C++11)

查看:278
本文介绍了可循环/的for_each的每一次迭代并行完成? (C ++ 11)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我遍历结构的载体和处理每个独立结构。结果
它看起来是这样的:

I'm iterating over a vector of structs and processing each struct individually.
It looks something like this:

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

在code是显著慢,因为DoTask连接到特定的网站和HTML进行分析。结果
什么是加快这最好的方法是什么?结果
我的目标是分析多个DataTs在同一时间。结果
我很新的线程,但的std ::异步并的的std ::未来看好

推荐答案

您可以做这样的事情。

for(T& d : data) std::thread(DoTask, d).detach();

或者你可以使用一些复杂的东西英特尔线程构建模块和 parallel_for时(是不是叫什么名字?)函数体。

Or you can use something more complicated like Intel's Thread Building Blocks and the parallel_for (isn't that the name?) function thereof.

这篇关于可循环/的for_each的每一次迭代并行完成? (C ++ 11)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆