for循环/for_each的每次迭代都可以并行完成吗?(C++11).
Can each Iteration of a for loop/for_each be done in parallel? (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
代码非常慢,因为DoTask连接到特定的网站并分析HTML。
加快速度的最佳方法是什么?
我的目标是同时分析多个 DataT。
我对线程很陌生,但 std::async 和 std::future 看起来很有希望。
你可以做这样的事情
for(T& d : data) std::thread(DoTask, d).detach();
或者你可以使用更复杂的东西,比如英特尔的线程构建块和它的parallel_for
(这不是名字吗?)功能。
你在使用 GCC 吗? 最新版本具有并行版本的for_each
(有关如何使用它,请参阅此处)。
如果您面向 Windows/VS2010(或更高版本),则始终可以使用 Microsoft 中的并行模式库 (PPL)。它有parallel_for_each
:
parallel_for_each(values.begin(), values.end(), [] (int& value)
{
value *= 2;
});
相关文章:
- C++11 基于范围的 for 循环,用于 std::list
- 如何使用 c++11 语法创建 for 循环以遍历向量
- 自动和范围内 for 循环 C++11 不起作用
- C++ for 循环中的 11 个线程类成员函数会给出分段错误
- C++11 语法'type var : var'称为'range-based for'
- IHTMLDocument2::get_body 在 CHtmlView for IE 11 中失败
- for 循环中的常量指针 (C++ 11)
- 如何将基于迭代器的 for 循环重写为基于范围的循环 (C++11)
- 在 C++11 段错误中基于范围的 for 循环,但不是常规 for 循环
- <mytype>使用 C++11 for() 循环遍历 vector<unique_ptr>
- c++11: std::bind for sub-class member-functions
- 从矢量中删除项目,而在 C++11 范围内'for'循环?
- 在基于 C++11 范围的'for'循环中获取对 STL 容器元素的引用
- 模板函数中的 C++11 for 循环
- 分段错误:11;基于范围的 for 循环
- for循环/for_each的每次迭代都可以并行完成吗?(C++11).
- RTTI support for C++11 ( _CPPRTTI and __GNUG__ )
- 在 -std=c++11 上编译时C++ "no match for operator >>"
- C++11:基于范围的 for 语句:"range-init"生命周期?
- Visual c++编译器2012年11月CTP与Qt Creator for c++ 11