.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>
generic class отличным и несовместимым с коллекциями из System.Collections.Concurrent
?
Update:
Позвольте мне перефразировать вопрос:
Что является общим знаменателем и отличает новую функцию во всех общих коллекциях, которые принадлежат пространству имен System.Collections.Concurrent
, которое отсутствует (и невозможно в то время как используя SynchronizedCollection<T>
общий класс?
Я изменил заголовок на "Что .NET 4.0 System.Collections.Concurrent
коллекция добавлена в функциональность для .NET 3.0 SynchronizedCollection
?".
Но в основном мне интересно узнать, что это делает невозможным на основе .NET 3.0
Update2: Относительно примечания:
"Этот вопрос может уже иметь ответ здесь:
В чем разница между SynchronizedCollection и другие параллельные коллекции?"
Ответ запутан в контексте моего вопроса - это новые функции, эволюционные (с использованием возможностей pre -.NET 4.0) или революционные (недоступные в pre -.NET 4.0)?