为什么这会以(几乎)降序呈现列表?
Workflow FE-Parallel {
foreach -parallel ($i in 0..100) { $i }
}
偶尔,有一个数字乱序,但 (0..100) 会生成一个从 0 开始到 100 结束的列表。
为什么这会以(几乎)降序呈现列表?
Workflow FE-Parallel {
foreach -parallel ($i in 0..100) { $i }
}
偶尔,有一个数字乱序,但 (0..100) 会生成一个从 0 开始到 100 结束的列表。
当您并行处理这些项目时,您无法保证它们将被处理的顺序。
如果您要问为什么序列每次都不相同,或者为什么它不是按顺序从 0 上升到 100,这就是原因。你可以用这样的代码更好地看到这一点:
foreach -parallel ($i in 0..100) {
Start-Sleep -Milliseconds (Get-Random -Minimum 100 -Maximum 800)
$i
}
如果您问它为什么下降(而不是看起来更“随机”),那么我认为这是一个实现细节。在内部,设置每个线程(或运行空间,或使用的任何机制)的代码需要遍历每个项目。它可能以可预测的方式进行,当您的操作如此简单时,它们很可能以大致相同的顺序完成。
为什么它会反过来呢?不确定,但重要的是你不能依赖任何特定的顺序。