假设您有一个由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