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