首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

为什么实现 .NET 的 ICollection 集合时需要实现 SyncRoot 属性?如何正确实现这个属性?

虽然泛型版本的 ICollection 已经改进了设计,不再引入 SyncRoot 这样的属性到接口中,但如果我们在某些场景下需要实现 ICollection 非泛型集合时,如何正确实现 SyncRoot...模式(SyncRoot Pattern)呢?...---- 先上结论: —— 不可能正确实现 SyncRoot 模式 在多线程程序设计中,为了在保证线程安全的同时避免死锁,不应该公开同步锁。...而 ICollection 接口中的 SyncRoot 属性在接口中必然是公开的,于是没有任何途径可以保证调用方不会发生死锁。...于是实现 SyncRoot 的正确方法应该是: —— 避免公开 SyncRoot 属性 所以 SyncRoot 模式应该这样实现: 使用显式接口实现,避免公开暴露此属性 抛出异常,避免调用者使用此属性

83930
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    扫码

    添加站长 进交流群

    领取专属 10元无门槛券

    手把手带您无忧上云

    扫码加入开发者社群

    热门标签

    活动推荐

      运营活动

      活动名称
      广告关闭
      领券