2016-12-24 75 views
0

是否可以使用parallel_for创建任务?混合并发:: parallel_for和异步任务

concurrency::concurrent_vector<concurrency::task<void>> tasks; 
concurrency::parallel_for(0, length, [tasks](int i) { 
    tasks.push_back(Upload_Async(i)); 
}); 
concurrency::when_all(tasks.begin(), tasks.end()).wait(); 
+0

它是,但为什么?! –

+0

我简化了代码,parallel_for部分负责生成异步上传部分的内容。 我想知道这种情况是否正确混合。我做了一些额外的测试,看起来很稳定。 –

回答

0

如果Upload_Async是真正异步的,那么它只是启动的任务并返回它,它不会做任何工作本身。这意味着在这里使用parallel_for没有任何意义,它不会加速你的代码,它只会增加开销。

+0

是的,我同意,在这种情况下,简单的循环就可以。 我简单介绍了parallel_for负责生成上传内容的代码示例。 我想可以并行和I/O任务异步 我已经与生产任务的上传3嵌套parallel_for时测试它执行的高CPU的任务,它似乎运作良好,到目前为止 –