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

ConcurrentDictionary并发场景下整数递增操作的安全性疑问

ConcurrentDictionary并发递增操作的安全性分析

直接使用 _tracker[id]++ 在并发访问场景下不安全,原因在于这个操作并非原子性的,它实际拆分为三个独立步骤:

  • 从ConcurrentDictionary中读取id对应的当前值
  • 将读取到的值执行加1操作
  • 把递增后的新值写回字典

在多线程并发执行时,可能出现多个线程同时读取到同一个旧值,各自完成递增后再写回,最终导致计数丢失更新的问题——比如两个线程同时读取到值为2,各自递增到3后写回,最终字典里的值是3,但实际应该是4。

而使用 _tracker.AddOrUpdate(id, 1, (id, count) => count + 1) 是安全的,因为AddOrUpdate方法是ConcurrentDictionary提供的原子操作,它会在内部通过同步机制保证“检查键是否存在→不存在则添加初始值1/存在则执行递增委托更新值”的整个流程是原子性的,不会被其他线程打断,能确保并发场景下计数的正确性。

内容的提问来源于stack exchange,提问作者Riyafa Abdul Hameed

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 20:57:32