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
Libérer: 2025-01-13 09:01:43
original
362 Les gens l'ont consulté

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>
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal