Flo*_*ian 1 c# parallel-processing for-loop
是否可以并行化 for 循环,从最大值开始,然后递减?在 Parallel.For 签名中,似乎只有“i”递增时才会出现这种情况
for (int i = Int32.MaxValue; i >= 0; --i)
{
// do something...
}
Run Code Online (Sandbox Code Playgroud)
问候,
弗洛里安
如果您正在编写并行代码,那应该没有关系:
MSFT不保证循环将从低到高或以任何特定顺序运行。
注意:Parallel.For 方法不保证任何特定的执行顺序。与顺序循环不同,一些较高值的索引可以在一些较低值的索引之前被处理。
实际上,Parallel.For 绝对不是按顺序运行的。
考虑 Jeppe Stig Nielsen 的例子(来自评论):
System.Threading.Tasks.Parallel.For(0, 25, i => { Console.WriteLine(i); });
Run Code Online (Sandbox Code Playgroud)
在我的 4 核机器上,我得到以下输出:
0
1
2
4
5
7
8
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
3
9
6
显然循环不符合顺序。
| 归档时间: |
|
| 查看次数: |
3832 次 |
| 最近记录: |