Maison >développement back-end >C++ >Comment puis-je implémenter une file d'attente de taille fixe avec suppression automatique de la file d'attente en C# ?
Création d'une file d'attente C# de taille fixe avec retrait automatique de la file d'attente
De nombreuses applications ont besoin d'une structure de données contenant un nombre fixe d'éléments, supprimant les plus anciens lorsqu'ils sont pleins. Ceci est utile pour suivre les événements récents ou conserver un historique. Imaginez un navigateur Web devant stocker les 100 dernières URL visitées. Bien que ConcurrentQueue<T>
puisse fonctionner, la gestion manuelle du retrait de la file d'attente est inefficace. Une classe wrapper personnalisée fournit une solution plus propre.
La FixedSizedQueue<T>
Classe
Cette classe encapsule un ConcurrentQueue<T>
, gérant à la fois la mise en file d'attente et la sortie de la file d'attente pour maintenir une taille définie. La définition de classe comprend :
<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; } // ... other methods }</code>
La Enqueue
Méthode
La méthode Enqueue
ajoute des éléments. Si la file d'attente dépasse la limite, elle supprime les éléments plus anciens :
<code class="language-csharp">public void Enqueue(T item) { queue.Enqueue(item); lock (lockObject) { T overflow; while (queue.Count > Limit && queue.TryDequeue(out overflow)) ; } }</code>
Utiliser FixedSizedQueue<T>
Pour utiliser la classe, créez une instance et définissez la limite :
<code class="language-csharp">var urlHistory = new FixedSizedQueue<string> { Limit = 100 };</code>
L'ajout d'éléments maintient automatiquement la taille :
<code class="language-csharp">urlHistory.Enqueue("www.google.com"); // Enqueues the URL urlHistory.Enqueue("www.microsoft.com"); // The oldest URL is automatically dequeued</code>
Cette approche offre un moyen plus élégant et plus efficace de gérer les files d'attente de taille fixe en C#.
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!