gpt4 book ai didi

c# - 多线程访问C#字典

转载 作者:行者123 更新时间:2023-11-30 20:06:18 26 4
gpt4 key购买 nike

我知道 C# 字典在添加、读取和删除元素时不是线程安全的;但是,如果另一个线程正在写入、读取和从字典中删除,您能否以线程安全的方式访问 C# 字典的 Count 属性?

最佳答案

由于属性是引擎盖下的方法调用,所以实际情况并不像乍看起来那么简单。

  • T1:访问 Count 属性
  • T1:get_Count() 调用(某种 JMP/GOTO ASM 指令)
  • T1: 读取变量,表示多个项目 == 1
  • T2:添加一个新的item,real count变为2
  • T1:返回 1 但实际上已经有两个项目

因此,如果应用程序逻辑依赖于 Count 属性值 - 理论上您最终可能会得到 race condition .

关于c# - 多线程访问C#字典,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9951046/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com