.NET 4.0 引入了System.Collections.Concurrent命名空间:
“ System.Collections.Concurrent命名空间提供了几个线程安全的集合类,当多个线程同时访问集合时,应使用这些类代替System.Collections和 System.Collections.Generic命名空间中的相应类型”
BlockingCollection<T>
班级ConcurrentBag<T>
班级ConcurrentQueue<T>
班级ConcurrentDictionary<TKey, TValue>
班级OrderablePartitioner<TSource>
班级Partitioner
班级IProducerConsumerCollection<T>
界面
该类SynchronizedCollection<T>
(自 .NET 3.0 起可用):
“提供一个线程安全的集合,其中包含由泛型参数指定的类型的对象作为元素”
...在System.Collections.Generic
命名空间中。
那么,为什么SynchronizedCollection<T>
类是线程安全的但不是并发的呢?
是什么使SynchronizedCollection<T>
泛型类与 中的集合不同且不兼容System.Collections.Concurrent
?
更新:
让我重新表述这个问题:属于命名空间的所有泛型集合中的共同点和区别新特性是什么,这在泛型类System.Collections.Concurrent
中不存在(并且在使用时是不可能的)?SynchronizedCollection<T>
我将标题更改为“System.Collections.Concurrent
向 .NET 3.0 添加了哪些 .NET 4.0 集合的功能SynchronizedCollection
?”。
但大多数情况下,我很想知道是什么使得在 .NET 3.0 的基础上无法做到这一点
更新2:关于注释:
“这个问题在这里可能已经有了答案:
就我的问题而言,答案令人困惑——新功能是进化的(使用 .NET 4.0 之前的功能)还是革命性的(在 .NET 4.0 之前的版本中不可用)?