2016-12-24 8 views
0

Ist es "ok", Aufgaben mit parallel_for zu erstellen?Mischen von Nebenläufigkeit :: parallel_for und async Aufgabe

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

ist es, aber warum ?! –

+0

Ich habe den Code vereinfacht, der parallel_for-Teil ist verantwortlich für die Erstellung des Inhalts für den asynchronen Upload-Teil. Ich wollte wissen, ob diese Art von Szenario richtig mischen. Ich habe einen extra Test gemacht und es scheint stabil zu sein. –

Antwort

0

Wenn Upload_Async wirklich asynchron ist, dann geht es nur um die Aufgabe und gibt sie, es nicht selbst eine der Arbeit tun. Das bedeutet, dass die Verwendung von parallel_for hier keinen Sinn ergibt, es wird Ihren Code nicht beschleunigen, sondern nur Overhead.

+0

Ja, ich stimme zu, einfache Schleife wäre in diesem Fall in Ordnung. Ich vereinfachte das Codebeispiel, das parallel_for für die Erstellung des Inhalts für den Upload verantwortlich ist. Ich möchte die hohen CPU-Aufgaben parallel ausgeführt werden und die I/O-Aufgaben async Ich habe es mit 3 verschachtelte parallel_for getestet, die Upload-Aufgaben zu produzieren und es scheint bis jetzt gut zu funktionieren –