10

我正在迭代结构向量并单独处理每个结构。
它看起来像这样:

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::asyncstd::future看起来很有希望。

4

3 回答 3

9

你可以做这样的事情

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

或者您可以使用更复杂的东西,例如英特尔的线程构建块及其parallel_for(不是这个名字吗?)功能。

于 2012-04-14T16:56:47.557 回答
6

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

于 2012-04-14T21:52:19.790 回答
3

如果您以 Windows/VS2010(或更高版本)为目标,您始终可以使用Microsoft的 The Parallel Patterns Library (PPL )。它有parallel_for_each

parallel_for_each(values.begin(), values.end(), [] (int& value)
{
  value *= 2;
});
于 2012-04-14T18:44:42.780 回答