1

新しい名前空間System.Collections.Concurrentには、他のクラスの中でも、ディクショナリ、キュー、およびスタックの同時コレクションが含まれています。ConcurrentListがないのはなぜですか?

アップデート

現在のシナリオを説明する新しい質問を投稿しました。私は、元の質問の全体的な意味を変えるよりも、それを好みました。新しい質問へのリンクは次のとおりです。

4

3 に答える 3

5

ランダムアクセスは、別のスレッドから変更されたデータ構造ではあまり意味がありません。

並行コレクションを見ると、それらのインターフェースがマルチスレッドアクセスでうまく機能するように特別に設計されていることがわかります。マルチスレッドコードでうまく機能する便利なリストのようなインターフェイスは考えられません。

ランダムなマルチスレッドアクセスは、要素が移動されない場合に意味がありますが、配列があります。

于 2011-10-25T20:09:22.097 に答える
5

2つのスレッドが同時にアイテムを追加した場合、「順序」にどのような期待がありますか? ConcurrentBagは、アイテムのコレクションだけが必要な場合に適しています。

于 2011-10-25T20:12:30.010 に答える
0

2011年に、スレッドセーフでロックフリーで、一部のインターフェイスを実装するConcurrentList<T>クラス( GitHubで利用可能なコード)を作成しました。IList<T>

Add特に、サポートされていない以外のリストを変更する操作。つまり、追加のみのコレクションです。したがって、、InsertなどRemoveAtは機能しません。

于 2013-04-05T18:24:06.663 に答える