C#   发布时间:2022-04-03  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了c# – Lock for Dictionary.Count大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
在访问集合的简单属性时,锁定是否有任何好处或危害,特别是.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:仅依靠记录在案的行为,否则你最终会陷入一个受伤的世界.

大佬总结

以上是大佬教程为你收集整理的c# – Lock for Dictionary.Count全部内容,希望文章能够帮你解决c# – Lock for Dictionary.Count所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。