gpt4 book ai didi

c# - SynchronizedCollection 和其他并发集合之间有什么区别?

转载 作者:IT王子 更新时间:2023-10-29 03:50:41 30 4
gpt4 key购买 nike

如何SynchronizedCollection<T>System.Collections.Concurrent 中的并发集合命名空间彼此不同,除了 Concurrent Collections 是一个命名空间和 SynchronizedCollection<T>是一个类(class)?

SynchronizedCollection<T> Concurrent Collections 中的所有类都提供了线程安全的集合。我如何决定何时使用一个而不是另一个,为什么?

最佳答案

SynchronizedCollection<T> class在 .NET 2.0 中首先引入,以提供线程安全的集合类。它通过锁定来做到这一点,所以你基本上有一个 List<T>每个访问都包含在 lock 中声明。

System.Collections.Concurrent 命名空间要新得多。它直到 .NET 4.0 才被引入,它包括一个显着改进和更多样化的选择集。这些类不再使用锁来提供线程安全,这意味着它们应该在多个线程同时访问它们的数据的情况下更好地扩展。但是,一个实现 IList<T> 的类这些选项中明显缺少接口(interface)。

因此,如果您的目标是 .NET Framework 4.0 版,则应使用 System.Collections.Concurrent 提供的集合之一。命名空间尽可能。正如在 System.Collections.Generic namespace 中提供的各种类型的集合之间进行选择一样,您需要选择其功能和特点最适合您的特定需求的。

如果您的目标是旧版本的 .NET Framework 或需要一个实现 IList<T> 的集合类界面,您必须选择 SynchronizedCollection<T>类。

MSDN 上的这篇文章也值得一读:When to Use a Thread-Safe Collection

关于c# - SynchronizedCollection<T> 和其他并发集合之间有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4655150/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com