我很难理解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个数字。
任何人都可以帮忙吗?
P.S.我有i5 520M CPU(2核心=> 4线程)
因此loopState.Break()退出所有线程?我使用loopState.Stop()来做这件事。 – 2013-04-28 10:47:10
澄清我以前的评论:我现在明白前两个循环如何停止,但为什么其他两个线程甚至不启动? Break是否能够终止多个线程?如果是这样怎么办? – 2013-04-28 10:54:58
请参阅有关停止与休息的好回答:http://stackoverflow.com/questions/8818203/what-is-difference-between-loopstate-break-loopstate-stop-and-scancellationt – 2013-04-28 11:03:10