问题标签 [concurrentdictionary]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
265 浏览

c# - 更新 ConcurrentDictionary 的最简单方法是什么

我创建了一个 ConcurrentDictionary 但不确定如何更新它的元素:

这是我需要更新的地方(通过向订单添加新元素),看来我应该使用 TryUpdate,但它看起来非常麻烦且难以阅读。

有人可以告诉我一个好方法吗。

0 投票
1 回答
363 浏览

c# - 锁定字典中的记录 - ConcurrentDictionary

多线程应用程序,使用静态字典。这将用于处理请求,每个请求将只访问一条记录。

处理请求

  1. 阅读记录
  2. 计算值的算法
  3. 更新记录。

在特定记录需要阻塞的过程中。

我没有找到任何线索,任何人都可以帮助我。

我可以使用 ConcurrentDictionary 吗?

0 投票
2 回答
3356 浏览

c# - 当 valueFactory 有副作用时 ConcurrentDictionary.GetOrAdd

我试图通过为一些非常中心的函数引入缓存层来从我的数据库服务器卸载工作,这些函数将值插入数据库中的表并检索 id。这是在多线程环境中。

我的第一种方法是:

这有帮助。然而,线程仍然彼此等待很多。我想减少这个等待时间。我的第一个想法是使用ConcurrentDictionary.GetOrAdd(key, valueFactory). 这是行不通的,因为 valueFactory 可以被多次调用。

我已经结束了这种方法:

有没有更好的方法来做到这一点?这甚至是线程安全的吗?

0 投票
1 回答
551 浏览

c# - 在 C# 中使用内存缓存的最有效方法是什么

在 WCF 应用程序中,我在数据库中有 80k+ 行很少更改。我想将它们缓存在内存中以便更快地查找。我应该能够在需要时驱逐他们。我为它找到了一些 C# 库。其中一些在内部使用 MemoryCache,而另一些则使用 ConcurrentDictionary。由于 MemoryCache 和 ConcurrentDictionary 都是线程安全的,我应该选择 MemoryCache 是否还有其他好处,反之亦然?

0 投票
2 回答
443 浏览

c# - Getting Duplicate Objects in Producer/Consumer ConcurrentDictionary C#

I'm stuck on a problem and am wondering if I just have coded something incorrectly. The application polls every few seconds and grabs every record from a table whose sole purpose is to signify what records to act upon.

Please note I've left out the error handling code for space and readability

This code works great, with the irritating fact that it may/will select the same record multiple times until said record(s) is/are processed. By processed, each selected record is being written into its own newly created, uniquely named file. Then a stored procedure is called for that record's key to remove it from the database at which point that particular key is removed from the ConcurrentDictionary.

For a throughput test I added 20k+ records into the table and then turned the application loose. I was quite surprised when I noticed 22k+ files that continued to increase well into 100k+ territory.

What am I doing wrong??? Have I completely misunderstood what the concurrent dictionary is used for? Did I forget a semi-colon somewhere?

0 投票
0 回答
383 浏览

c# - 从 ConcurrentDictionary 中删除一个值>

我正在编写一个(希望如此)线程安全的数据结构,它本质上是一个 HashSet 的 ConcurrentDictionary 的包装器。

我想做的是有一些这样的方法:

我希望 TryRemove 存在类似于 ConcurrentDictionary.AddOrUpdate(key, newValue, Func) 的东西,但没有运气。对于普通字典来说,这两个 Remove 方法都很容易编写,但是在并发它们时,我很茫然。有人指出我正确的方向吗?:)

0 投票
1 回答
8338 浏览

c# - ConcurrentDictionary ContainsKey 方法是否同步?

简单的问题假设我有一个ConcurrentDictionary

我使用TryAddContainsKey方法

现在假设我从 100 个线程开始处理东西。假设当 3 个线程使用方法添加新键时,另外 3 个线程使用方法TryAdd询问键是否存在ContainsKey

ContainsKey在返回结果之前等待这 3 个线程添加进程吗?

或者它们没有同步,我的意思是这 3 个线程之一可能正在添加我使用 ContainsKey 方法询问的密钥,但是由于该过程尚未完成,我将得到的答案将是错误的

Ty 非常希望得到答案 C# WPF .net 4.5 最新

0 投票
2 回答
1157 浏览

c# - ContinueWith 委托在任务完成之前运行

背景信息:我正在尝试创建一个能够一次处理 5 个并发操作的单例类。每个操作由 表示SomeAsyncMethod


此方法存在于单例类中。

consumers是一个ConcurrentDictionary<int,Task>

我的问题:由于某种原因,ContinueWith委托在SomeAsyncMethod. 我知道发生这种情况的原因是因为我有另一种观察方法instance.Consumers.Count- 计数0SomeAsyncMethod完成之前。

这是为什么?

0 投票
1 回答
1019 浏览

c# - 3 个线程使用的 C# ConcurrentDictionary

我有一个使用ConcurrentDictionary.

在这个类中,有三个函数对 this 执行一些操作ConcurrentDictionnary

每个函数由不同的线程调用。

  • 第一个函数操作:dictionnary.Where、dictionnary.TryRemove
  • 第二个函数操作:dictionnary.Where
  • 第三个函数操作:dictionnary.TryAdd

最后一个功能在不同的时间阻塞。我必须在不阻塞的情况下将我的元素添加到字典中,但我该怎么做?

0 投票
1 回答
1127 浏览

c# - 使用线程安全的 ConcurrentDictionary 集合

我有一个这样的函数,它使用非线程安全的集合列表,也是线程安全的,它使用锁操作符:

我想将它转换为无锁。为此,我在这个函数中使用了 ConcurrentDictionary 集合而不是 List 集合,所以我的函数开始看起来是这样的:

但是在这个函数中我开始得到错误(索引超出范围)。如何正确使用线程安全集合(ConcurrentDictionary)?如何解决我的错误?