Verwenden von System.Collections.Concurrent für einen Verlauf mit fester Größe
Stellen Sie sich vor, Sie benötigen eine Datenstruktur, um den aktuellen Verlauf zu verfolgen, z. B. Browser-URLs. System.Collections.Concurrent.ConcurrentQueue
ist eine gute Wahl, aber wir müssen die Größe begrenzen.
Dieses Beispiel zeigt eine FixedSizedQueue<T>
-Klasse, die ConcurrentQueue
umschließt, um einen begrenzten Verlauf zu verwalten:
<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>
Die Eigenschaft Limit
definiert die maximale Warteschlangengröße. Enqueue
fügt ein Element hinzu; Wenn das Limit überschritten wird, werden ältere Elemente mithilfe einer Sperre sicher entfernt, bis die Größe wieder innerhalb des Limits liegt. Dadurch bleiben nur die aktuellsten Einträge erhalten. Sie würden diese Klasse um weitere Methoden wie Dequeue
, Count
usw. erweitern, je nach Bedarf Ihrer Anwendung.
Das obige ist der detaillierte Inhalt vonWie verwaltet man einen begrenzten Verlauf mithilfe einer gleichzeitigen Warteschlange in C#?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!