问题标签 [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 投票
2 回答
1043 浏览

c# - 遍历 ConcurrentDictionary 并修改集合

遍历 ConcurrentDictionary 集合并删除一些条目的正确方法是什么。

据我了解 ConcurrentDictionary 在单元格的级别上实现锁定,对我来说,遍历整个集合并通过某些条件删除不相关的数据很重要。我害怕通过我的迭代,其他线程将添加应该在我的迭代器在集合中的那个点之后过滤的数据。

那么我如何使用 ConcurrentDictionary 来实现这一点,或者应该在该集合的每次触摸上使用具有锁定机制的普通字典。

谢谢。

0 投票
4 回答
16541 浏览

c# - 如何将字典转换为 ConcurrentDictionary?

我已经看到如何将ConcurrentDictionary 转换为 Dictionary,但我有一本字典并想转换为 ConcurrentDictionary。我该怎么做?...更好的是,我可以将链接语句设置为 ConcurrentDictionary 吗?

0 投票
1 回答
1015 浏览

c# - Safely removing list mapping from ConcurrentDictionary

I have a ConcurrentDictionary which maps a simple type to a list:

I can use AddOrUpdate() to cater for both initialization of the list when the first value is added, and addition of subsequent values to the list.

However, the same isn't true for removal. If I do something like:

...where my intention is to remove the key completely if the corresponding list no longer has any values (similar to reference counting, in concept), then I'm risking a race condition because someone might have added something to the list right after I checked whether it's empty.

Although I am using a list in this simple example, I usually have a ConcurrentBag or ConcurrentDictionary in such scenarios, and the risk is quite similar.

Is there any way of safely removing a key when the corresponding collection is empty, short of resorting to locks?

0 投票
1 回答
3575 浏览

c# - ConcurrentDictionary adding same keys more than once

I want to use ConcurrentDictionary to check if this data key has been added before, but it looks like I can still add keys which added before.

code:

test code:

result:

0 投票
2 回答
1326 浏览

c# - 使用 ConcurrentDictionary 作为缓存并处理更新

我有下面的代码,现在我想添加一个UpdateSetting方法。

我能看到的最好的方法是通过TryUpdateon the ,ConcurrentDictionary但这意味着知道以前的值,因此需要调用GetSetting似乎有点恶心的调用。你怎么认为?有没有更好的办法?

注意:如果该值不在缓存中,它应该什么都不做。在成功更新缓存时,它应该调用settingRepository.Update

谢谢

0 投票
1 回答
780 浏览

c# - 如何在 ConcurrentDictionary.TryGetValue 中使用 OUT-value?

请帮助我了解 ConcurrentDictionary 是如何工作的?我有这个:

我必须更改客户端中的一些值并将更改保存在 ConcurrentDictionary 中。会是对的吗?

或者我可以这样做,这就足够了?

0 投票
2 回答
700 浏览

c# - 试图了解 ConcurrentDictionary 的工作原理

如果 value 尚不存在,我想将其初始化为 0。否则它应该增加现有值。

此时,字典有 1 和 2 的键,每个值为 0。

此时键 1 的值应为 1,而键 2 的值应为 0,但是,两者的值都为 0。知道为什么吗?

0 投票
1 回答
1108 浏览

c# - 仅在按值过滤时如何检索键

我只想选择值大于 5 的键。我该怎么做?

0 投票
1 回答
663 浏览

c# - ConcurrentDictionary - AddOrUpdate 问题

我正在使用下面的代码来尝试根据字典对象的键更新字典对象中的值。

//第一次添加

//尝试更新

但是 ConcurrentDictionary 中的UsersessionStatistic对象userViewModel2没有得到更新(它的浏览器属性仍然说"Netscape"),我做错了什么?

0 投票
1 回答
495 浏览

c# - 在 AddOrUpdate 方法中更新密钥对象

我有一个测试课。

我想设置一个 ConcurrentDictionary,其中一个 int 作为键,Test 作为值。

我想为此字典编写 AddorUpdate 的 Update 部分,以便如果外部变量(例如 External)为真,则该 Test 实例的 Val 应增加 100,但如果 bool 为假,则应减少 100。可以有人帮助我我该怎么做。我只是不确定如何使用 lambda 访问字典中的 Test 实例。尽管有 lambda,我也可以进行方法调用吗?