当前位置:  开发笔记 > 运维 > 正文

.NET是否具有与Java的ConcurrentHashMap等效的Dictionary实现?

如何解决《.NET是否具有与Java的ConcurrentHashMap等效的Dictionary实现?》经验,为你挑选了1个好方法。

回顾那些可能不了解Java API的.NET专家:

Java中的ConcurrentHashMap具有常见的Map修改操作的原子方法(即不需要外部锁定),例如:

putIfAbsent(K key, V value)
remove(Object key, Object value)
replace(K key, V value)

它还允许在没有锁定的情况下迭代键集(它在迭代开始时需要复制),并且get()操作通常可以与put()不阻塞的调用交错(它使用细粒度锁定条带IIRC).

无论如何,我的问题是:.NET有一个等效的Dictionary实现吗?

我想更普遍的是,我很想知道.NET是否有更通用的线程安全集合库.或者一般的并发实用程序 - 相当于Doug Lea的java.util.concurrent库.



1> Olmo..:

传入的.Net 4.0有一个ConcurrentDictionary类,它有一个方便的GetOrAdd方法.

public TValue GetOrAdd(
    TKey key,
    Func valueFactory
)

对全局服务器缓存非常有用.


对于全局服务器缓存,最好使用`MemoryCache`对象,否则如果不从`ConcurrentDictionary中手动删除引用的对象,可能会泄漏内存
推荐阅读
勤奋的瞌睡猪_715
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有