古い項目を自動削除する C# での固定サイズのキューの作成
この記事では、オブジェクトの限定された履歴を保持し、最大サイズに達したときに最も古いエントリを自動的に破棄するデータ構造の作成について説明します。 System.Collections
名前空間を使用してこのキューを構築します。
解決策:
このソリューションでは、FixedSizedQueue<T>
の周囲にラッパー クラス ConcurrentQueue<T>
を使用します。 このラッパーの Enqueue
メソッドはキューのサイズをチェックします。キューがいっぱいの場合 (Limit
プロパティで定義)、新しい項目に対応するために、最も古い項目が Dequeue
経由で削除されます。
FixedSizedQueue<T>
クラスの C# コードは次のとおりです。
<code class="language-csharp">public class FixedSizedQueue<T> { private readonly ConcurrentQueue<T> queue = new ConcurrentQueue<T>(); private readonly object lockObject = new object(); public int Limit { get; set; } public void Enqueue(T obj) { queue.Enqueue(obj); lock (lockObject) { T overflow; while (queue.Count > Limit && queue.TryDequeue(out overflow)) ; } } }</code>
FixedSizedQueue<T>
を使用すると、履歴が固定サイズになり、容量制限に達すると古いアイテムが自動的に削除されます。
以上がC# で自動デキューを備えた固定サイズのキューを実装するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。