2

次のコレクションが必要です。

1 - 固定長。そのため、テールが固定サイズの制限に達すると、自動的にテールがデキューされます。

2 - 必ずしもヘッドまたはテールのみではなく、個々の要素にアクセスできます。

3 - 先入れ先出し。

4 - 安全な同時アクセスを許可します (ただし、現時点ではこの点については妥協できます)。

5 - Enqueue および Dequeue メソッド。

私は .NET 4.5 を使用しており、ConcurrentQueue クラスを認識していますが、ポイント 1 と 2 がありません。IEnumerable を実装し、バックグラウンドで IList を使用するクラスを構築することを考えています。

ConcurrentQueue から継承することもできますが、body 要素 (head と tail だけでなく) に継続的にアクセスする必要があり、毎回列挙するのは非効率的です。

より良いアプローチがありますか、または同様の仕事をするコレクションをお勧めしますか?

4

2 に答える 2

0

リストまたは配列のラッパーを構築します。必要なキュー メソッドを提供したり、サイズを追跡したりします。独自の同時実行要件をこのクラスにプログラムします。

于 2012-12-21T20:55:55.893 に答える
0

古いプレーンに基づくキュー実装を使用しますSystem.Array。あなたのポイント:

1 - 配列は固定長です。

2 - 定義により、O(1) の個々の要素にアクセスできます。

3 - これはキューになるため、FIFO になります。

4 - 配列はコンカレント セーフになりますlock。Enqueue メソッドと Dequeue メソッドにのみ使用します。

5 - 簡単に実装できます。

于 2012-12-21T20:58:35.183 に答える