我遍历结构的载体和处理每个独立结构。
它看起来是这样的:
for_each(begin(data),end(data),DoTask);
//assume "data" is std::vector<DataT>
//assume DoTask is a function that takes a DataT by reference
该代码是显著慢,因为DoTask连接到特定的网站和HTML分析。
什么是加快这最好的方法是什么?
我的目标是分析多个DataTs在同一时间。
我很新的线程,但性病::异步和性病::未来的看好。
你可以做这样的事情
for(T& d : data) std::thread(DoTask, d).detach();
或者你可以使用更复杂的东西像英特尔线程构建模块和parallel_for
(是不是叫什么名字?)功能上。
您是否使用GCC? 最新版本具有的并行版本for_each
(参见这里了解如何使用它)。
您可以随时使用的并行模式库(PPL)从微软,如果你面向Windows / VS2010(或更高版本)。 它有parallel_for_each
:
parallel_for_each(values.begin(), values.end(), [] (int& value)
{
value *= 2;
});