c++ - for 循环/for_each 的每次迭代都可以并行完成吗? (C++11)

标签 c++ asynchronous c++11 parallel-processing future

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

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看起来很有前途。

最佳答案

你可以这样做

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

或者您可以使用更复杂的东西,例如 Intel 的线程构建 block 及其 parallel_for(不是这个名字吗?)函数。

关于c++ - for 循环/for_each 的每次迭代都可以并行完成吗? (C++11),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10155457/

相关文章:

c++ - 在差异进程的线程之间发送信号

c++ - 调用默认构造函数没有匹配的函数

javascript - 将异步函数与同步函数混合?

c++ - 可以单独使用这两个参数,但不能同时使用

c++ - "does not name a type"简单程序错误

c# - 如何终止挂起的 APM 操作

javascript - 在整个 mocha 测试之前运行异步代码

C++电话号码程序

c++ - 使用 std::string 作为缓冲区有缺点吗?

c++ - 为什么模板实例化永远在这里进行?