153得票7回答
.NET - 字典锁定 vs. ConcurrentDictionary

我无法找到关于ConcurrentDictionary类型的足够信息,所以我想在这里询问一下。 目前,我使用一个Dictionary来存储所有用户,它被多个线程(从线程池中,因此没有确切的线程数)不断访问,并且具有同步访问。 我最近发现了.NET 4.0中一组线程安全的集合,它看起来非常令...

134得票5回答
在ConcurrentDictionary的AddOrUpdate方法中,更新部分应该添加什么内容?

我正在尝试使用ConcurrentDictionary来重新编写一些代码。我已经查看了一些示例,但在实现AddOrUpdate函数时仍然遇到了困难。以下是原始代码: dynamic a = HttpContext; Dictionary<int, string> ...

93得票5回答
什么时候应该使用ConcurrentDictionary和Dictionary?

我总是不知道该选择哪一个。按照我的理解,如果我想要两种数据类型作为Key和Value,以便我可以通过其key轻松找到一个值,那么我会使用 Dictionary 而非 List。但我总是困惑是否应该使用 ConcurrentDictionary 还是 Dictionary? 在你责备我没有对此...

85得票3回答
ConcurrentDictionary.TryAdd会失败吗?

这更像是一个学术性问题...但是 ConcurrentDictionary.TryAdd 可能会失败吗?如果会,在哪些情况下会失败,为什么会失败?

49得票5回答
ConcurrentDictionary.GetOrAdd 异步方法

我想在一个WebService中使用类似于GetOrAdd的东西,将其作为缓存与ConcurrentDictionary一起使用。是否有这个字典的异步版本?因为GetOrAdd将使用HttpClient进行Web请求,所以如果有一种GetOrAdd是异步的版本会很好。 为了消除一些疑惑,字典的...

37得票6回答
如何将ConcurrentDictionary转换为Dictionary?

我有一个ConcurrentDictionary对象,我想将它设置为一个Dictionary对象。它们之间不能直接进行强制类型转换,那么我该怎么做呢?

33得票2回答
为什么ConcurrentDictionary.GetOrAdd(key, valueFactory)允许valueFactory被调用两次?

我正在使用一个并发字典作为线程安全的静态缓存,并注意到以下行为: 从the MSDN docs on GetOrAdd: 如果您在不同的线程上同时调用GetOrAdd, addValueFactory可能会被多次调用,但其键/值对 可能不会添加到字典中的每个调用。 我希望能够保证工厂只被...

32得票2回答
如何选择并发字典的并发级别

我正在使用并发字典存储大约两百万条记录,想知道如何初始化字典的并发级别。 MSDN网页在其示例代码中有以下注释: “并发级别越高,ConcurrentDictionary上可执行并发操作的理论数量就越高。然而,随着并发级别的提高,像调整字典大小这样的全局操作花费的时间也会更长。” 这是我能找到...

31得票7回答
C#中元组与字符串作为字典键的区别

我有一个使用ConcurrentDictionary实现的缓存,需要根据5个参数来决定需要保留的数据。因此从缓存中获取数据的方法是:(这里仅展示了3个参数以简化问题,并且更改了数据类型以便于表示CarData)public CarData GetCarData(string carModel,...

26得票9回答
ConcurrentDictionary<> 在单线程下的性能误解?

相关简要信息: 据我所知,并发堆栈、队列和袋类都是使用内部链接列表实现的。 而且我知道由于每个线程负责自己的链接列表,争用要少得多。 无论如何,我的问题是关于ConcurrentDictionary&lt;,&gt; 但是我正在测试这段代码:(单线程) Stopwatch sw = ne...