【发布时间】:2014-07-10 13:11:49
【问题描述】:
这段代码的输出每次都不同。是否可以从 0 到 21 顺序输出 i(迭代计数)?
static void Main(string[] args)
{
int N = 1000;
Parallel.For(0, N, (i, loop) =>
{
Console.WriteLine(i);
if (i == 21)
{
loop.Break();
}
});
Console.ReadLine();
}
【问题讨论】:
-
是的,这是可能的——不要使用并行。您要么需要以未定义的顺序并行执行,要么需要以已定义的顺序执行。
-
但是如果不使用parallel,那么它将是简单的For()循环。
-
并行会为每次迭代创建线程,无法保证线程的执行顺序。
-
如果我想执行前 (0-5) 五次迭代,然后执行最后 (17-21) 五次迭代,然后是剩余的迭代,我该怎么做? 0,1,2,3,4,5,17,18,19,20,21,....的顺序输出。
-
"但是如果不使用并行,那么它将是简单的 For() 循环" --- 完全正确。这就是你想要的。
标签: c# parallel.for