固定サイズの履歴に System.Collections.Concurrent を使用する
ブラウザの URL など、最近の履歴を追跡するためのデータ構造が必要になることを想像してください。 System.Collections.Concurrent.ConcurrentQueue
は良い選択ですが、サイズを制限する必要があります。
この例は、制限された履歴を管理するために FixedSizedQueue<T>
をラップする ConcurrentQueue
クラスを示しています。
<code class="language-csharp">public class FixedSizedQueue<T> { private readonly ConcurrentQueue<T> _queue = new ConcurrentQueue<T>(); private readonly object _lock = new object(); public int Limit { get; set; } public void Enqueue(T item) { _queue.Enqueue(item); lock (_lock) { T overflow; while (_queue.Count > Limit && _queue.TryDequeue(out overflow)) { } } } // Add other methods like Dequeue, Count, etc., as needed. }</code>
Limit
プロパティは最大キュー サイズを定義します。 Enqueue
はアイテムを追加します。制限を超えると、サイズが制限内になるまでロックを使用して古いアイテムを安全に削除します。これにより、最新のエントリのみが保持されます。 アプリケーションの必要に応じて、このクラスを拡張して、Dequeue
、Count
などの他のメソッドを含めることができます。
以上がC# で同時キューを使用して制限された履歴を維持する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。