concurrentdictionary相关内容

ConcurrentDictionary 的列表顺序是否有保证?

我使用 ConcurrentDictionary 来存储日志行,当我需要向用户显示它们时,我调用 ToList() 来生成一个列表.但奇怪的是,有些用户在列表中最先收到最近的行,而逻辑上他们应该在最后. 这是因为 ConcurrentDictionary 不能保证 IEnumerate 接口上的持久顺序,或者可能是什么原因? 解决方案 No ConcurrentDictionary( ..

为什么 ConcurrentDictionary.GetOrAdd(key, valueFactory) 允许 valueFactory 被调用两次?

我使用并发字典作为线程安全的静态缓存并注意到以下行为: 来自 MSDN 上的文档获取或添加: 如果您在不同的线程上同时调用 GetOrAdd,addValueFactory 可能会被多次调用,但它的键/值对可能不会每次调用都添加到字典中. 我希望能够保证工厂只被调用一次.有没有什么方法可以使用 ConcurrentDictionary API 做到这一点,而无需诉诸我自己的单独同 ..
发布时间:2021-12-20 11:22:29 C#/.NET

.NET - 字典锁定与 ConcurrentDictionary

我找不到关于 ConcurrentDictionary 类型的足够信息,所以我想在这里询问一下. 目前,我使用 Dictionary 来保存由多个线程(来自线程池,因此没有确切数量的线程)不断访问的所有用户,并且它具有同步访问. 我最近发现.NET 4.0中有一套线程安全的集合,看起来很讨人喜欢.我想知道什么是“更有效且更易于管理"的选项,因为我可以选择使用具有同步访问的普通 Dict ..
发布时间:2021-12-10 16:09:33 C#/.NET

通过基于类的当前实现直接枚举ConcurrentDictionary到正常的Dictionary,将它安全地复制吗?

TL; DR:是否可能对 ConcurrentDictionary 的单个枚举发出同一密钥两次?是否 ToArray 方法返回 ConcurrentDictionary 的一致视图: 返回一个新数组,其中包含从 ConcurrentDictionary 复制的键和值对的快照. 但是我宁愿使用第二种方法,因为它产生较少的争用.不过,我担心是否会出现 Argum ..
发布时间:2021-04-30 19:55:53 其他开发

如何在.NET ConcurrentDictionary中实现remove_if功能

我有一种情况,我必须在 ConcurrentDictionary 中将给定密钥的引用计数对象保留在其中,如果引用计数达到 0 ,我想删除密钥.这必须是线程安全的,因此我计划使用 ConcurrentDictionary . 示例程序如下.在并发字典中,我有key和value,值是KeyValuePair,其中包含我的自定义对象和引用计数. ConcurrentDictionary ..

易变结构和结构集合

我想利用网络智慧来澄清有关.net中多线程的一些情况.互联网上有很多关于它的东西,但是我找不到我的问题的好答案. 比方说,我们希望通过并发线程的安全性来维护类中某些内容的状态.最简单的情况是当状态为int时: class Class1{volatile int状态= 0;公共诠释州{得到{返回状态;}}公共行动状态已更新;公共无效UpdateState(int newStat ..
发布时间:2021-04-01 21:29:39 C#/.NET

在MemoryCache调用中停止重入

应用程序需要加载数据并缓存一段时间.我希望,如果应用程序的多个部分希望同时访问相同的缓存键,则缓存应该足够聪明,以仅加载一次数据并将该调用的结果返回给所有调用者.但是, MemoryCache 没有这样做.如果并行命中缓存(这在应用程序中经常发生),则每次获取缓存值的尝试都会创建一个任务.我以为这段代码可以达到预期的效果,但是没有达到目的.我希望缓存仅运行一个 GetDataAsync 任务,等待 ..
发布时间:2021-04-01 20:05:30 其他开发

我什么时候应该使用ConcurrentDictionary和Dictionary?

我总是很困惑选择哪一个。如我所见,如果我想将两种数据类型用作 Key,则在 List 上使用 Dictionary 和 Value ,所以我可以通过其键轻松找到一个值,但我总是很困惑如果我应该使用 ConcurrentDictionary 或 Dictionary ? 在您对我没有做太多研究之前,我尝试过,但是看来Google在 Dictionary 和上并没有真正的用处Concurrent ..
发布时间:2020-10-21 22:50:29 C#/.NET

如何对ConcurrentDictionary实现条件的TryRemove?

最近我需要 Dictionary ,我可以从多个线程中进行更新,显然,该工作的候选人是内置 ConcurrentDictionary 。不幸的是,我最终没有使用它,而是使用了受 lock 保护的普通 Dictionary : TryRemove 不提供允许有条件删除元素的重载。可用的 TryRemove 方法将删除并返回已删除的元素,但在我的情况下,只有在相同工作流程中早先插入该元素时,才必须删除 ..
发布时间:2020-10-07 21:28:53 C#/.NET

调用GetOrAdd时如何将异步方法的结果存储在.NET ConcurrentDictionary中?

我有一个private ConcurrentDictionary,它是一些数据库密钥的简单查找表. 我试图利用ConcurrentDictionary,以便仅在同时向同一行代码发出2个以上请求时才对数据库执行一次调用. (这就是为什么我使用ConcurrentDictionary的原因.) 请问我该怎么做? 这是我尝试要做的..但是我认为它是将Task存储在字典中……而不是任务的 ..
发布时间:2020-06-21 19:25:57 C#/.NET

缓慢的Azure队列Webjob性能(本地开发)

我的webapi必须执行一系列繁重的操作才能完成请求。为了最大程度地减少处理时间,我将“视图计数器增量”卸载到了Webjob。 我目前的操作方式是将userId和productId的消息加入队列在每个请求结束时进行队列存储。 webjob函数会在新的队列消息上触发,并且在解析消息后会向静态并发字典添加值(增加或添加新值)。 我不会递增并写入Azure表,因为我想使用另一个基于计时器的W ..

是否可以确保ConcurrentDictionary的列表顺序?

我正在使用ConcurrentDictionary存储日志行,当需要向用户显示日志行时,我致电ToList()生成列表.但是奇怪的是,某些用户在列表中排在第一位,而在逻辑上应该排在最后. 这是因为ConcurrentDictionary不保证IEnumerate接口上的持久性顺序吗?或者是什么原因? 解决方案 否ConcurrentDictionary(和Dictionary)不能 ..