只有值在更改时,是否可以使用ReadOnlyDictionary



我知道ReadOnlyDictionary是"线程安全";当从多个线程访问时,只要集合不变
但是,如果集合没有更改(从未添加/删除任何键(,并且值本身是线程安全的,也就是说,引用不会更改,但值的内部数据可能会更改(Value对象本身是线程保护的(例如

ReadOnlyDictionary<Key, ThreadSafe Value> dictionary = new...  
dictionary[key].inc()

其中inc()ThreadSafeValue的线程安全方法。

由于集合本身没有改变,引用也没有改变,我认为这是可以的,但由于ReadOnlyDictionary没有公开Add/Remove/Update,而且它不是线程安全的,我想知道我的假设是否正确

您的问题似乎源于对什么是";值";在字典的上下文中。

从字典的角度来看,假设ThreadSafeValue是引用类型,那么该值就是对对象的引用。如果你从不修改字典,那么引用本身就永远不会改变。换句话说,键和值都不会改变。

如果ThreadSafeValue本身是线程安全的,那么整个用例看起来是安全的。

是的,你的假设是正确的。由于存储在字典中的值是自主的线程安全的,并且字典本身实际上是不可变的,因此整个数据结构是线程安全的。

相关内容

  • 没有找到相关文章

最新更新