Maison >développement back-end >C++ >Comment conserver un historique limité à l'aide d'une file d'attente simultanée en C# ?

Comment conserver un historique limité à l'aide d'une file d'attente simultanée en C# ?

Patricia Arquette
Patricia Arquetteoriginal
2025-01-13 09:01:43401parcourir

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

Utilisation de System.Collections.Concurrent pour un historique de taille fixe

Imaginez avoir besoin d'une structure de données pour suivre l'historique récent, comme les URL du navigateur. System.Collections.Concurrent.ConcurrentQueue est un bon choix, mais il faut limiter sa taille.

Cet exemple montre une classe FixedSizedQueue<T> qui encapsule ConcurrentQueue pour gérer un historique délimité :

<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>

La propriété Limit définit la taille maximale de la file d'attente. Enqueue ajoute un élément ; si la limite est dépassée, il utilise un verrou pour supprimer en toute sécurité les éléments plus anciens jusqu'à ce que la taille soit dans la limite. Cela conserve uniquement les entrées les plus récentes. Vous étendriez cette classe pour inclure d'autres méthodes telles que Dequeue, Count, etc., selon les besoins de votre application.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn