Heim > Backend-Entwicklung > C++ > Wie implementiert man eine Warteschlange fester Größe mit automatischer Entfernung aus der Warteschlange in C#?

Wie implementiert man eine Warteschlange fester Größe mit automatischer Entfernung aus der Warteschlange in C#?

Patricia Arquette
Freigeben: 2025-01-13 11:57:44
Original
207 Leute haben es durchsucht

How to Implement a Fixed-Sized Queue with Automatic Dequeueing in C#?

Implementierung einer Warteschlange fester Größe mit automatischer Entnahmefunktion in C#

Bei der Softwareentwicklung ist die Verwaltung begrenzter Speicherkapazität bei gleichzeitiger Beibehaltung notwendiger Informationen von entscheidender Bedeutung. Beim Arbeiten mit Warteschlangen kommt es häufig vor, dass ständig neue Daten hinzugefügt werden und alte Daten verworfen werden müssen, wenn die Kapazitätsgrenze erreicht ist. Um dieses Problem zu lösen, stellen wir eine Lösung bereit, die die Klasse System.Collections im Namespace ConcurrentQueue<T> verwendet.

Implementierung einer Warteschlange fester Größe mit Dequeue-Funktion

Um eine Warteschlange mit fester Größe und automatischer Entnahmefunktion zu erstellen, definieren wir eine Wrapper-Klasse FixedSizedQueue<T>, die intern einen ConcurrentQueue<T>:

kapselt
<code class="language-csharp">public class FixedSizedQueue<T>
{
    private readonly ConcurrentQueue<T> q = new ConcurrentQueue<T>();
    private readonly object lockObject = new object();

    public int Limit { get; set; }
    public void Enqueue(T obj)
    {
        q.Enqueue(obj);
        lock (lockObject)
        {
            T overflow;
            while (q.Count > Limit && q.TryDequeue(out overflow)) ;
        }
    }
}</code>
Nach dem Login kopieren

Erklärung

Die Klasse

FixedSizedQueue<T> stellt eine einzige Methode Enqueue zum Hinzufügen von Elementen zu einer Warteschlange bereit. Intern prüft es, ob die Anzahl der Warteschlange den angegebenen Limit überschreitet. Wenn ja, verwenden Sie die lock-Anweisung, um die Warteschlange zu sperren und Elemente aus der Warteschlange zu entfernen, bis die Anzahl unter den Grenzwert fällt.

Dieser Mechanismus stellt sicher, dass immer nur die erforderliche Anzahl an Elementen in der Warteschlange gespeichert wird. Die ältesten Elemente werden automatisch entfernt, um neuere Elemente aufzunehmen.

Anwendungsbeispiel

Um die Klasse FixedSizedQueue<T> zu verwenden, erstellen Sie eine Instanz und legen Sie das Attribut Limit auf die höchste gewünschte Kapazität fest:

<code class="language-csharp">FixedSizedQueue<string> browserHistory = new FixedSizedQueue<string> { Limit = 100 };</code>
Nach dem Login kopieren

Anschließend rufen Sie einfach die Methode Enqueue auf, um ein neues Element zum Verlauf hinzuzufügen:

<code class="language-csharp">browserHistory.Enqueue("www.google.com");</code>
Nach dem Login kopieren

Wenn Sie weitere URLs hinzufügen, werden die ältesten URLs automatisch aus der Warteschlange entfernt, sodass die erforderliche Kapazität von 100 URLs im Verlauf erhalten bleibt.

Das obige ist der detaillierte Inhalt vonWie implementiert man eine Warteschlange fester Größe mit automatischer Entfernung aus der 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