问题标签 [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.
c# - 如何通过 Microsoft Fakes 使用 ConcurrentDictionary (C#) 填充长外部依赖项?
在我需要测试的代码中发现了这样的外部依赖:
var something = GConfig.SConfig[Type.ServiceType1].Names;
这部分的代码是这样的:
我需要消除这种依赖,但我自己找不到完整的解决方案,只有部分:
对于 GConfigIt(和匀场名称):Fakes.ShimGConfigIt.AllInstances.NamesGet
对于匀场 SConfig:Fakes.ShimGConfig.AllInstances.SConfigGet
但我找不到连接,如何完全填充它。
PS 我只是一名测试人员,不能更改现有代码。为了进行更改,我需要说服开发人员这样做(即 GConfig 的额外接口),但他们必须确保这不仅仅是为了“轻松测试”或“测试测试”而进行的更改,他们确实需要这样做。
c# - C# 中的并发字典
对于并发字典
(其中 C 是某个类),有没有人知道关于如何对 C 的实例执行操作的规则和限制的参考,比如 C0,这是字典中的一个值?即,如果我们有一个线程直接在 C0 上执行操作,而另外两个线程通过字典在 C0 上执行操作,我猜我们仍然可能会遭受竞争条件?(如果 C 是原始语言,我们不会这样做)。
感谢您提出的任何建议!
最好的,克里斯
c# - 在 C# 中将 Equality Comparer 类添加到自定义属性类的基类
我正在使用 ConcurrentDictionary ,关键是由具有公共属性的类组成。
在玩弄了来自(HashCode on decimal with IEqualityComparer in a ConcurrentDictionary)的代码之后,我想找到一个解决方案,所以我不必为我创建的每个属性类实现具有接口 IEqualityComparer 的类。
我已经创建了一个基类,可以检查是否设置了所有公共属性(或者至少不是默认值)。所以,我想,让我们尝试一下,将 IEqualityComparer 类添加到基类中。
到目前为止,我有这个并且它确实有效。
我只用三个属性做了这个例子。通常有越来越多不同的类型,我只是不想为每个属性类在 concurrentDictionary 中使用自定义类。
事情是(当然),现在的方式,它只适用于 TwoUintsOneStringsKeyInfo 类型的属性类,因为我必须在实现 IEqualityComparer<> 时指定它。
有什么方法可以将 EqualityComparerElevenUintsKeyInfo 类实现到基类并使其灵活,使 EqualityComparerElevenUintsKeyInfo 检查哪个类实现了 EqualityComparerElevenUintsKeyInfo 并将该类用作 IEqualityComparer、GetHashCode 和 Equals 的参数(如果可以这样做的话我想要,我当然也会更改 Equals 方法。
建议?
亲切的问候,
马蒂斯
.net - 将 LINQ ToDictionary 与 ConcurrentDictionary 一起使用
我正在使用字典来收集多线程应用程序中的事件,在添加事件时使用锁,而在搜索事件时不使用它。每隔一小时左右,我就会对超过特定时间的事件进行清理。非常简单,而且有效。
我想移动到 ConcurrentDictionary 来删除锁,我想我只需要添加“并发”并将 Add 更改为 TryAdd。但是后来我遇到了 LINQ 只返回 ToDictionary 的错误。我显然不能使用 LINQ,但我很想知道是否可以做些什么来保护它。更重要的是,在迁移到 ConcurrentDictionry 之前我还应该考虑什么?
谢谢
c# - 如何在多线程服务器上使用字典
我是字典概念的新手。我找到了一种创建能够处理多个客户端的简单服务器的方法。有没有一种方法可以使用字典/ConcurrentDictionary 来保存信息,例如建立连接的时间以及它用于各种客户端的端口。我创建了一个单独的示例字典,但我不知道如何使它与服务器应用程序一起工作,或者它是否可以工作。(服务器是使用 localhost 和端口 9090 创建的。客户端也在本地运行)。如果您需要任何澄清,请告诉我。我将如何/在哪里放置字典代码块以允许它保存已建立的连接信息,或者是否有不同/更好的方法?
下面是服务器代码:
.net - ConcurrentDictionary 的列表顺序是否得到保证?
我正在使用 ConcurrentDictionary 来存储日志行,当我需要向用户显示它们时,我调用ToList()
它来生成一个列表。但奇怪的是,一些用户在列表中最先收到最近的行,而从逻辑上讲,他们应该排在最后。
这是因为 ConcurrentDictionary 不保证 IEnumerate 接口上的持久顺序,还是可能是什么原因?
c# - 将并发字典传递给另一个方法
我在将 ConcurrentDictionary 传递给带有 out 参数的另一个方法时遇到了一些问题。
在主要方法中,
我得到的错误消息是“使用未分配的参数字典”。而且我需要在整个代码中保留字典的内容。感谢您的帮助。
c# - 对 ConcurrentDictionary 进行排序有意义吗?
起初我的想法是“这是一种基于哈希的数据类型,然后它是未排序的”。
然后因为我要使用它,所以我深入研究了这个问题,发现这个类实现了IEnumerable
,而且这篇文章证实了可以迭代这种数据。
所以,我的问题是:如果我使用foreach
aConcurrentDictionary
来读取元素的顺序是什么?
然后,作为第二个问题,我想知道其接口继承的排序方法是否有任何用途。如果我在新订单上调用排序方法ConcurrentDictionary
将持续存在(例如对于传入foreach
)?。
希望我已经说清楚了
c# - 大数的并发字典
我想知道为什么ConcurrentDictionary
getOrAdd
随着条目数的增加方法会严重减慢。
我在 3 个嵌套循环中调用它,并打印以记录每个 innest 循环的时间,我可以看到每个 innest 循环的执行时间线性增长,我不知道为什么,因为每个 innest 循环的大小相同。我猜这是一些问题ConcurrentDictionary
,但这就是我在这里问的原因。
有什么建议吗?
c# - .Net 4.5.1 ConcurrentDictionary TryRemove() 方法是否释放分配的内存?
我有一个由元素组成的缓存,每个元素都包含两个并发字典,我认为它们可能导致我的应用程序中的内存泄漏。我经常在这本词典中添加和删除内容。有人可以向我描述内存分配如何用于并发字典以及在我的情况下最佳实践是什么?提前致谢!