ホームページ > バックエンド開発 > C++ > C# で同時キューを使用して制限された履歴を維持する方法は?

C# で同時キューを使用して制限された履歴を維持する方法は?

Patricia Arquette
リリース: 2025-01-13 09:01:43
オリジナル
365 人が閲覧しました

How to Maintain a Bounded History Using a Concurrent Queue in C#?

固定サイズの履歴に 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 はアイテムを追加します。制限を超えると、サイズが制限内になるまでロックを使用して古いアイテムを安全に削除します。これにより、最新のエントリのみが保持されます。 アプリケーションの必要に応じて、このクラスを拡張して、DequeueCount などの他のメソッドを含めることができます。

以上がC# で同時キューを使用して制限された履歴を維持する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート