我很难理解loopState.Stop()
和loopState.Break()
。我已经阅读了MSDN和几篇文章,但我仍然感到困惑。
我理解的是,每次迭代分区器都会为线程提供要处理的剩余索引,loopState.Stop()
将停止所有线程,而loopState.Break()
将停止当前线程。
但是,让我们考虑以下情况:
Parallel.For(0, 100, (i, loopState) =>
{
if (i >= 10)
loopState.Break();
Debug.Write(i);
});
对于这个循环,我得到了以下结果:
0 25 1 2 3 4 5 6 7 8 9 10
我不知道为什么结果中有数字10和25。
有人可以帮忙吗?
附言:我的CPU是i5 520M(2个核心 => 4个线程)。
loopState.Break()
前加上Thread.Sleep(1)
,有时它们就会开始执行。 - Matthew Watson