You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在PowerShell ForEach-Object -Parallel循环中添加原子计数器

PowerShell 实现线程安全的原子整数操作

在PowerShell中没有原生的原子整数类型,但可以借助.NET的System.Threading.Interlocked类实现线程安全的整数增减,该类的所有操作都是原子性的,能避免多线程环境下的竞态问题。

针对你的场景,修改后的代码示例如下:

$myCounter = 0

$myItems | ForEach-Object -Parallel {
    # ... 其他业务处理逻辑

    # 原子性地为计数器增加2,返回操作前的旧值
    $oldValue = [System.Threading.Interlocked]::Add([ref]$using:myCounter, 2)
    # 若需使用更新后的值,可通过 $oldValue + 2 获取

    # ... 后续逻辑可基于旧值或新值处理
}

Write-Host "最终计数器值: $myCounter"

关键说明

  • [ref]用于传递变量引用,让Interlocked类能直接修改外部作用域的计数器变量
  • 并行块中引用外部变量必须加$using:前缀
  • 除了Add方法,该类还提供Increment(原子+1)、Decrement(原子-1)等方法,适配不同需求

内容的提问来源于stack exchange,提问作者Ryu S.

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 17:01:22