2010-08-21 34 views
7

假設您有一個由1000個隨機整數組成的數組,您需要遍歷它以找到數字68。Parallel.For中斷

在四核CPU上使用新的Parallel.For將顯着提高速度,使每個核心只能運行250個陣列項目。

問題是:當符合以下條件時是否可以中斷Parallel.For循環?

if (integerArray[i] == 68) 

    break; 

謝謝。

回答

9

如果你想在當前執行的迭代之後停止完成(但目前的前迭代將被執行 - 即用較低的指標迭代= I)

Parallel.For(0, 100, (i, s) => 
    { 
     s.Break(); 
    }); 

,或者您想在此之前的電流和interations之後停止(以指數計= I)也應該停止

Parallel.For(0, 100, (i, s) => 
    { 
     s.Stop(); 
    }); 

但在這兩種情況下,它是很好的做法,檢查工作應中止如果迭代可能需要一段時間

s.ShouldExitCurrentIteration 

在這裏閱讀更多Parallel.For Method (Int32, Int32, Action(Int32, ParallelLoopState))

+0

我混淆了一些關於'Break'和'Stop'的概念 - 請重新閱讀答案:) – 2010-08-21 20:18:20