ser*_*g10 5 .net concurrency dictionary map
回顾那些可能不了解Java API的.NET专家:
Java中的ConcurrentHashMap具有常见的Map修改操作的原子方法(即不需要外部锁定),例如:
putIfAbsent(K key, V value)
remove(Object key, Object value)
replace(K key, V value)
Run Code Online (Sandbox Code Playgroud)
它还允许在没有锁定的情况下迭代键集(它在迭代开始时需要复制),并且get()操作通常可以与put()不阻塞的调用交错(它使用细粒度锁定条带IIRC).
无论如何,我的问题是:.NET有一个等效的Dictionary实现吗?
我想更普遍的是,我很想知道.NET是否有更通用的线程安全集合库.或者一般的并发实用程序 - 相当于Doug Lea的java.util.concurrent库.
Olm*_*lmo 16
传入的.Net 4.0有一个ConcurrentDictionary类,它有一个方便的GetOrAdd方法.
public TValue GetOrAdd(
TKey key,
Func<TKey, TValue> valueFactory
)
Run Code Online (Sandbox Code Playgroud)
对全局服务器缓存非常有用.
从来没听说过。最接近您正在寻找的东西可能是哈希表的 Synchronized 方法,它返回哈希表周围的(某种)线程安全包装器。不过,它仅对于多个写入器或多个读取器来说是线程安全的。如果我没记错的话,作者和读者的混合将不是线程安全的。
| 归档时间: |
|
| 查看次数: |
2928 次 |
| 最近记录: |