C# 最小锁定线程安全哈希表?

C# 最小锁定线程安全哈希表?,c#,.net,multithreading,data-structures,locking,C#,.net,Multithreading,Data Structures,Locking,是否有任何可用的哈希表实现可以在.NET中以最少的锁定提供线程安全性?或者使用另一种可以移植到.NET的语言 我们正在寻找一种介于使用带lock()的BCL字典类和分布式缓存应用程序(如memcached或Velocity)之间的方法 其预期用途是用于一个缓存,其中数千个读卡器根据键(数字或guid,我们还没有决定是哪个)读取不可变的值。编写器将少得多,可能只有一个。从.NET4.0开始就有了。这是一个哈希表样式的结构,用于多线程之间的高性能使用 有关其使用和实施的详细信息,请参见: 在Br

是否有任何可用的哈希表实现可以在.NET中以最少的锁定提供线程安全性?或者使用另一种可以移植到.NET的语言

我们正在寻找一种介于使用带lock()的BCL字典类和分布式缓存应用程序(如memcached或Velocity)之间的方法


其预期用途是用于一个缓存,其中数千个读卡器根据键(数字或guid,我们还没有决定是哪个)读取不可变的值。编写器将少得多,可能只有一个。

从.NET4.0开始就有了。这是一个哈希表样式的结构,用于多线程之间的高性能使用

有关其使用和实施的详细信息,请参见:

在Brian Rudolf中,他分享了一个指向线程安全字典的链接,该字典使用ReaderWriterLockSlim:


您还可以查看同步哈希表:。

请定义“线程安全”的含义。cf。描述您的使用场景可能也会有所帮助。您是要混合插入/查找/删除还是要以某种方式将它们组合在一起?所有的操作是从多个线程访问,还是只从某些线程访问?这看起来不像是可以通过键索引的;i、 例如,没有
O(1)
方法来获取特定的键控值
ConcurrentBag
似乎对生产者/消费者场景更有用。也许你的意思是“ConcurrentDictionary”()?你肯定是指“ConcurrentDictionary”@杰森,迈克尔,谢谢,是的,我是说字典。我最好的借口是时间还早,在我喝咖啡之前我就开始这么做了。MSDN文档只是说它提供了一个线程安全字典,没有详细说明它是如何实现线程安全的。你有没有更详细的链接,以及它是否比旧的同步哈希表实现更好?@Sam,我添加了一个包含更多信息的链接基于ReaderWriterLockSlim的字典看起来正是我想要的——更高效的锁定。直接链接:同步哈希表正是我试图避免的,对所有访问都使用简单的lock()。您是使用它还是等待.Net 4 ConcurrentDictionary?