我正在迭代一个结构向量并单独处理每个结构 它看起来像这样:
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 加快这个速度的最佳方法是什么? 我的目标是同时分析多个DataT 我对线程很新,但std::async和std::future看起来很有希望。
答案 0 :(得分:9)
你可以做这样的事情
for(T& d : data) std::thread(DoTask, d).detach();
或者您可以使用更复杂的东西,如英特尔的线程构建模块和parallel_for
(不是名称?)功能。
答案 1 :(得分:6)
你在使用GCC吗?最新版本具有for_each
的并行版本(有关如何使用它,请参阅here。)
答案 2 :(得分:3)
如果您定位Windows / VS2010(或更高版本),则始终可以使用Microsoft的The Parallel Patterns Library (PPL)。它有parallel_for_each
:
parallel_for_each(values.begin(), values.end(), [] (int& value)
{
value *= 2;
});