c# – Lock for Dictionary.Count
发布时间:2020-12-16 01:51:46 所属栏目:百科 来源:网络整理
导读:在访问集合的简单属性时,锁定是否有任何好处或危害,特别是.Count? (这是可取的,不可取的,或者丝毫没关系?)(当然我需要将其锁定在任何写入或读取上) private Dictionarystring,bool database = new Dictionarystring,bool();private object databaseLock =
在访问集合的简单属性时,锁定是否有任何好处或危害,特别是.Count? (这是可取的,不可取的,或者丝毫没关系?)(当然我需要将其锁定在任何写入或读取上)
private Dictionary<string,bool> database = new Dictionary<string,bool>(); private object databaseLock = new object(); public int Count { get { lock (databaseLock) { return database.Count; } } } 就个人而言,我认为这可能是明智的,只是为了敲定约定,需要锁定对字典的访问,而不是出于任何实际原因[*].此外,在您访问的任何属性中,可能会有超过一个操作的操作. [*]知道在C#中的(大多数)集合中,Count是一个由它维护的整数,所以应该始终是一个原子操作 解决方法
是的,在并发写入的情况下需要锁定,因为Dictionary的文档不保证这是安全的.你不能假设它的内部结构.
此规则的例外情况需要极端情况. TL; DR:仅依靠记录在案的行为,否则你最终会陷入一个受伤的世界. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |