2016-12-24 13 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にあります。 私は、高いCPUのタスクは、私がアップロードタスクを生成3ネストされたのparallel_forでそれをテストしている 非同期(async)パラレルおよびI/Oタスクで実行することを希望し、今のところうまく機能しているようです –

関連する問題