Powershell工作流程处理

时间:2015-08-18 01:52:56

标签: powershell workflow-foundation powershell-workflow

为什么这会以(几乎)降序呈现列表?

Workflow FE-Parallel {
    foreach -parallel ($i in 0..100) { $i }
}

偶尔会有一个无序的数字(0..100)产生一个从0开始到100结尾的列表。

1 个答案:

答案 0 :(得分:1)

您无法保证在并行处理商品时处理商品的顺序。

如果您每次都要问为什么序列不一样,或者为什么它不按顺序从0到100递增,这就是原因。您可以使用以下代码更好地看到这一点:

foreach -parallel ($i in 0..100) {
    Start-Sleep -Milliseconds (Get-Random -Minimum 100 -Maximum 800)
    $i
}

如果你问为什么它会下降(而不是看似更多"随机")那么我认为这是一个实现细节。在内部,设置每个线程(或运行空间或使用的任何机制)的代码需要迭代每个项目。它可能以可预测的方式进行,当您的操作非常简单时,它们很可能以大致相同的顺序完成。

为什么反过来呢?不确定,但重要的是你不能依赖任何特定的订单。