假設您有一個由1000個隨機整數組成的數組,您需要遍歷它以找到數字68。Parallel.For中斷
在四核CPU上使用新的Parallel.For將顯着提高速度,使每個核心只能運行250個陣列項目。
問題是:當符合以下條件時是否可以中斷Parallel.For循環?
if (integerArray[i] == 68)
break;
謝謝。
假設您有一個由1000個隨機整數組成的數組,您需要遍歷它以找到數字68。Parallel.For中斷
在四核CPU上使用新的Parallel.For將顯着提高速度,使每個核心只能運行250個陣列項目。
問題是:當符合以下條件時是否可以中斷Parallel.For循環?
if (integerArray[i] == 68)
break;
謝謝。
如果你想在當前執行的迭代之後停止完成(但目前的前迭代將被執行 - 即用較低的指標迭代= 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))
聽起來我應該看看PLINQ(並行LINQ)執行並行查詢,而不是並行查詢。
http://msdn.microsoft.com/en-us/library/dd460688.aspx
糾正這個(簡單的)例子。但這是一個更普遍的問題。 – 2010-08-21 21:01:50
我混淆了一些關於'Break'和'Stop'的概念 - 請重新閱讀答案:) – 2010-08-21 20:18:20