Mou*_*ouk 11 concurrency dictionary immutability thread-safety .net-4.5
我正在寻找一个可以从多个线程访问的只读字典.虽然ConcurrentDictionary暴露了这样的功能,但我不希望有开销和奇怪的API.
.Net 4.5虽然提供了这样的类,但文档指出只有静态调用才是安全的.
我想知道为什么?
Jon*_*eet 11
ReadOnlyDictionary
只是任何其他字典的包装.因此,它仅作为基础字典的线程安全.
特别是,如果有一个线程修改底层字典而另一个线程从包装器读取,则无法保证安全性.
如果你想要一个ReadOnlyDictionary
从各个角度都是有效不可变的,你可以创建一个原始字典的克隆,创建一个ReadOnlyDictionary
包装器,然后不在任何地方保持对克隆的引用.与仅读操作正在进行,应该再是线程安全的.当然,如果键或值类型是可变的,那就会引起第二个"线程不安全"的担忧.
归档时间: |
|
查看次数: |
1572 次 |
最近记录: |