Dieser Artikel ist ein Spiegelartikel der maschinellen Übersetzung, bitte klicken Sie hier, um zum Originalartikel zu springen.

Ansehen: 221|Antwort: 1

[Quelle] . PriorityQueue Prioritätswarteschlange in NET6

[Link kopieren]
Veröffentlicht am 20.10.2025, 10:02:53 | | | |
.NET 6 führt einen neuen Sammlungstyp ein, PriorityQueue, der, wie der Name schon sagt, zusätzlich zur normalen Warteschlange Prioritätsunterstützung hinzufügt. Hinweis: Er ist esNicht gewindesicher, du musst auf Sicherheitsaspekte bei Threads achten.

Quelle:Der Hyperlink-Login ist sichtbar.

Loslegen

Schauen wir uns ein einfaches Anwendungsbeispiel an:
Beispielausgabe:



Man sieht, dass die Reihenfolge der Ausgabe entgegengesetzt ist zu der Reihenfolge, die wir hinzugefügt haben. PriorityQueue beginnt mit der kleinsten Priorität beim Dequeue, je kleiner der Wert, desto höher die Priorität, je höher die Priorität, je höher die Priorität, je höher die Priorität, desto mehr Priorität ist die Ausgabe. Wenn wir zuerst die maximale Ausgabe wollen, ist das in Ordnung? Die Antwort ist ja, aber wir müssen unsere eigenen Prioritätsvergleichsregeln festlegen. Sie können sich auf folgendes Beispiel beziehen.

Szenen

Mit automatischer Sortierung mit Priorität können wir PriorityQueue verwenden, wenn wir eine Auto-Sortierung benötigen

Nachrichtenwarteschlange

Mit PriorityQueue kann eine Prioritätsnachrichtenwarteschlange implementiert werden, die es den Nutzern ermöglicht, die Priorität einer Nachricht beim Senden einer Nachricht anzugeben, die beim Konsumieren priorisiert wird.

Im obigen Beispiel geben wir standardmäßig eine int als Prioritätstyp an und fügen einige Nachrichten in die Warteschlange ein, aber es gibt oft viele Nachrichten, und es kann Situationen mit derselben Priorität geben, die wir nutzen könnenZeit und Intelligenz als föderierter PrioritätstypSie können sich auf folgendes Beispiel beziehen:
Ein Beispiel für die Ausgabe ist wie folgt:



Aus den obigen Ergebnissen geht hervor, dass wir im Fall von Priorität zunächst Nachrichten mit weniger Zeit verarbeiten oder die Sortiermethode nach unseren eigenen Bedürfnissen anpassen und die Prioritätsvergleichslogik anpassen.

Rang

PriorityQueue kann auch in vielen Bewertungsanwendungen verwendet werden, wie zum Beispiel in der Bewertung der Schülerleistungen

Werfen Sie einen Blick auf den Beispielcode unten:
Die obige Liste ist eine Liste von Noten, schreibe einfach ein paar Testdaten, über die UnorderedItems von PriorityQueue können wir die Daten vor der Sortierung erhalten, und es ist auch die Reihenfolge, in der wir uns der Warteschlange anschließen (Enqueue). Der Standardvergleich ist der kleine Erste, also der niedrige Wert ist erst, dann wollen wir von größte zu kleinste sortieren, um die Vergleichsmethode anzupassen.

Der obige High2LowComparer ist ein benutzerdefinierter Vergleich, der tatsächlich eine Inversion des Vergleichsergebnisses ist, und der Code ist wie folgt:
Die obige Ausgabe ist wie folgt:



Mehr

Es gibt einen zset(sortedSet)-Datentyp in Redis, der ähnliche Dinge tun kann, aber es gibt dennoch einige Unterschiede zwischen zset und PriorityQueue: zset ist eine Menge, eine Sammlung, die automatisch dedupliziert. Während PriorityQueue weiterhin eine Warteschlange ist, wird nicht dedupliziert; zset kann die Priorität (Score) des entsprechenden Elements ändern, aber PriorityQueue Derzeit wird es nicht unterstützt, die entsprechende Priorität eines Elements zu ändern

PriorityQueue kann einige unserer Probleme lösen, aber es gibt ein paar Dinge, die man bei der Nutzung beachten sollte:

  • Erstens, wenn die Priorität gleich ist, kann die Reihenfolge der Ausgabe unterschiedlich sein, was durch den internen Implementierungsalgorithmus bestimmt wird, und die Reihenfolge kann nicht streng garantiert werden
  • PriorityQueue ist nicht threadsicher, und threadsichere Probleme müssen beachtet werden
  • Die Peek-Methode in PriorityQueue ruft nur das nächste Element in der Warteschlange ab, entfernt es aber nicht aus der Warteschlange
(Ende)




Vorhergehend:Douyin Mall Crawler-Analyse, Positionierung von 6 Göttern, Risikokontrollanalyse, jetzt sollten es 7 Götter X-Perseus sein
Nächster:Links zu EBPF-bezogenem Wissen
 Vermieter| Veröffentlicht am 20.10.2025, 10:09:05 |
Typische Anwendungsszenarien

Krankenhausnotrufe, Aufgabenplanungssystem, zum Beispiel: Prioritätsanruf für kritisch kranke Patienten, der Code lautet wie folgt:
Verzichtserklärung:
Alle von Code Farmer Network veröffentlichten Software, Programmiermaterialien oder Artikel dienen ausschließlich Lern- und Forschungszwecken; Die oben genannten Inhalte dürfen nicht für kommerzielle oder illegale Zwecke verwendet werden, andernfalls tragen die Nutzer alle Konsequenzen. Die Informationen auf dieser Seite stammen aus dem Internet, und Urheberrechtsstreitigkeiten haben nichts mit dieser Seite zu tun. Sie müssen die oben genannten Inhalte innerhalb von 24 Stunden nach dem Download vollständig von Ihrem Computer löschen. Wenn Ihnen das Programm gefällt, unterstützen Sie bitte echte Software, kaufen Sie die Registrierung und erhalten Sie bessere echte Dienstleistungen. Falls es eine Verletzung gibt, kontaktieren Sie uns bitte per E-Mail.

Mail To:help@itsvse.com