假设您有一个包含 1000 个随机整数的数组,并且您需要遍历它以找到数字 68。
在四核 CPU 上使用新的 Parallel.For 将显着提高速度,使每个核只工作 250 个数组项。
问题是:是否可以在满足以下条件时中断 Parallel.For 循环?
if (integerArray[i] == 68)
break;
谢谢。
假设您有一个包含 1000 个随机整数的数组,并且您需要遍历它以找到数字 68。
在四核 CPU 上使用新的 Parallel.For 将显着提高速度,使每个核只工作 250 个数组项。
问题是:是否可以在满足以下条件时中断 Parallel.For 循环?
if (integerArray[i] == 68)
break;
谢谢。
如果您想在当前执行的迭代完成后停止(但将执行当前迭代之前的迭代 - 即具有较低索引 = i 的迭代)
Parallel.For(0, 100, (i, s) =>
{
s.Break();
});
或者如果您想在当前和之前的交互之后停止(就索引 = 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