Heim > Backend-Entwicklung > C++ > Wie verwaltet man einen begrenzten Verlauf mithilfe einer gleichzeitigen Warteschlange in C#?

Wie verwaltet man einen begrenzten Verlauf mithilfe einer gleichzeitigen Warteschlange in C#?

Patricia Arquette
Freigeben: 2025-01-13 09:01:43
Original
369 Leute haben es durchsucht

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

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>
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage