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!