.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>
ジェネリッククラスには存在しません(使用中は不可能です) ?
タイトルを「.NET3.0System.Collections.Concurrent
に追加された.NET4.0コレクションとはSynchronizedCollection
?」に変更しました。
しかし、ほとんどの場合、.NET3.0に基づいて実行できなくなった理由を知りたいと思っています。
Update2:メモについて:
「この質問にはすでに答えがあるかもしれません:
答えは私の質問の文脈では混乱しています-新機能は進化的(.NET 4.0以前の機能を使用)ですか、それとも革新的(.NET 4.0以前では利用できません)ですか?