. net泛型集合在多线程环境中会变慢吗?

本文关键字:环境 泛型 集合 多线程 net | 更新日期: 2023-09-27 17:54:43

几天前,我参加了一家股票公司的c#.net开发人员面试,他们的应用程序必须在几秒钟内频繁更新。所以,采访者告诉我,在。net泛型集合(如List、Stack、Dictionary)上获取锁或提供线程同步非常慢。所以,他们使用他们的自定义集合。所以,我想知道"当获取锁和释放锁时,.net集合是否真的很慢,即使它们很慢,那么我们如何通过编写自定义泛型类来提高性能"

. net泛型集合在多线程环境中会变慢吗?

泛型和多线程之间没有任何关系。既然如此,我不知道你在问什么。

.net收集真的很慢吗?

…是无法回答的,因为表现是相对的。

如何通过编写自定义泛型类来提高性能

不能,因为泛型与此无关。您可以通过编写针对应用程序的特定需求进行定制的自定义集合来提高性能。这很少是一个好主意,但它可以是。例如,创建一个比内置List<T>更快的类是很容易的。将List<T>作为模板并删除所有迭代器版本控制逻辑以减少一些开销。这小小的胜利很少值得付出代价。

如果您需要建议:尝试使用内置集合。有一个System.Collections.Concurrent命名空间用于同步。

根据我们掌握的信息,我们无法判断你的面试官建立自定义集合是对还是错。

我的问题是,为什么锁是较慢的。net Collection

你只能使用lock与。net所以我不确定你在这里问什么。还有:比慢什么?

是否有一种方法可以比锁提供的更快地实现可变对象的同步?

通常,这是可能的。如何做到这一点完全取决于具体情况。如果有一种通用的方法来做lock所做的事情,而且速度更快,那么我们就不需要lock了。

我想通过收集你问的所有不同的问题并解决它们来帮助你。我认为,如果你问的问题少一些,更精确一些,你就会自己找到答案,或者认识到有些问题没有多大意义。问对了问题就会有答案。