2012-04-12 72 views
1

它是一個不好的做法,執行具有某些任務並行任務的集合Parallel.ForEach()內和其他一些一的Parallel.For()?我需要幫助有關TPL實踐

事情是這樣的:

Task[] tasks = new Task[n]; 

tasks[0] = new Task(() => { Parallel.For(...) { } }); 
tasks[1] = new Task(() => { Parallel.ForEach(...) { } }); 

Task.WaitAll(tasks); 
+5

什麼在擾亂你?並行循環?或者一個是爲了另一個是foreach的事實?該代碼看起來非常好。 – 2012-04-12 16:41:35

+1

我沒有看到任何錯誤的並行任務,每個產卵其他並行任務(這是什麼'Parallel.For'正在做)。它非常適合某些類型的算法。 – Servy 2012-04-12 16:44:43

+0

在我的評論中,@Servy暴露了什麼讓我煩惱。事實上,這並不擾亂我,而是讓我感到有趣。許多任務會產生其他並行任務的事實不會增加算法運行時間的損失? – Michelle 2012-04-12 18:42:30

回答

0

這當然不是壞的做法是使用適當的代碼構造處理正確的數據。如果您有理由對另一組數據執行for並且對另一組數據執行,那麼通過所有手段這樣做。