Tento článok je zrkadlovým článkom o strojovom preklade, kliknite sem pre prechod na pôvodný článok.

Pohľad: 221|Odpoveď: 1

[Zdroj] . PriorityQueue prioritná fronta v NET6

[Kopírovať odkaz]
Zverejnené 2025-10-20 10:02:53 | | | |
.NET 6 zavádza nový typ kolekcie, PriorityQueue, ktorý, ako už názov napovedá, pridáva podporu priorít nad bežnou frontou. Poznámka: JeNe-bezpečná voči vláknam, musíte venovať pozornosť bezpečnostným otázkam vlákien.

Zdroj:Prihlásenie na hypertextový odkaz je viditeľné.

Začať

Pozrime sa na jednoduchý príklad použitia:
Príklad výstupu:



Vidíte, že poradie výstupov je opačné ako poradie, ktoré sme pridali. PriorityQueue začína s najmenšou prioritou, keď sa vyradí z fronty, čím menšia hodnota, tým vyššia priorita, čím vyššia priorita, čím vyššia priorita, tým väčšia priorita výstup, ak chceme najskôr maximálny výstup, je to v poriadku, odpoveď je áno, ale musíme si špecifikovať vlastné pravidlá porovnávania priorít, môžete sa pozrieť na nasledujúci príklad

Scény

Pri automatickom triedení s prioritou môžeme zvážiť použitie PriorityQueue, keď potrebujeme automatické triedenie

Fronta správ

S PriorityQueue je možné implementovať prioritnú frontu správ, ktorá umožňuje používateľom špecifikovať prioritu správy pri odoslaní správy, ktorá bude prioritizovaná pri jej konzumácii.

V uvedenom príklade špecifikujeme int ako predvolený typ Priority a niektoré správy zlúčime do fronty, ale často je tam veľa správ a môžu existovať situácie s rovnakou prioritou, ktoré môžeme použiťČas a int ako federovaný typ priorítMôžete sa odvolať na nasledujúci príklad:
Príklad výstupu je nasledovný:



Z vyššie uvedených výsledkov je vidieť, že v prípade priority najskôr spracujeme správy s kratším časom, alebo si môžeme prispôsobiť spôsob triedenia podľa našich potrieb a prispôsobiť logiku porovnávania priorít.

Rad

PriorityQueue sa dá použiť aj v mnohých aplikáciách na hodnotenie hodnotenia, napríklad v rebríčku výkonnosti študentov

Pozrite sa na príklad kódu nižšie:
Vyššie uvedený zoznam je zoznam známok, stačí napísať niekoľko testovacích dát, cez UnorderedItems v PriorityQueue môžeme získať dáta pred zoradením, a je to aj poradie, v akom sa pridávame do fronty (Enqueue), predvolené porovnanie je najprv malé, teda najnižšie skóre je prvé, potom chceme zoradiť od najväčšieho po najmenšie, potrebujeme prispôsobiť metódu porovnania.

Vyššie uvedený High2LowComparer je vlastné porovnanie, ktoré je v skutočnosti inverziou výsledku porovnania, a kód je nasledovný:
Výstup vyššie je nasledovný:



Viacej

V Redis existuje typ dát zset(sortedSet), ktoré dokážu podobné veci, ale stále existujú rozdiely medzi zset a PriorityQueue, zset je množina, kolekcia, ktorá automaticky deduplikuje, zatiaľ čo PriorityQueue je stále Queue nebude deduplikovaný, zset môže modifikovať prioritu (skóre) príslušného prvku, ale PriorityQueue V súčasnosti nie je podporované meniť zodpovedajúcu prioritu prvku

PriorityQueue môže vyriešiť niektoré naše problémy, ale pri jeho používaní je potrebné myslieť na niekoľko vecí:

  • Po prvé, ak je priorita rovnaká, poradie výstupu môže byť odlišné, čo určuje jeho interný implementačný algoritmus, a poradie nemôže byť striktne garantované
  • PriorityQueue nie je bezpečný pre vlákna a je potrebné poznamenať problémy s bezpečnosťou vlákien
  • Metóda Peek v PriorityQueue načíta iba nadchádzajúci prvok vo fronte, ale neodstráni ho z fronty
(Koniec)




Predchádzajúci:Analýza Douyin Mall crawlera pozícia 6 bohov, analýza kontroly rizika, teraz by to malo byť 7 bohov X-Perseus
Budúci:Odkazy na poznatky súvisiace s EBPF
 Prenajímateľ| Zverejnené 2025-10-20 10:09:05 |
Typické aplikačné scenáre

Nemocničné tiesňové volania, systém plánovania úloh, napríklad: prioritné volanie pre kriticky chorých pacientov, kód je nasledovný:
Vyhlásenie:
Všetok softvér, programovacie materiály alebo články publikované spoločnosťou Code Farmer Network slúžia len na vzdelávacie a výskumné účely; Vyššie uvedený obsah nesmie byť použitý na komerčné alebo nezákonné účely, inak nesú všetky následky používateľmi. Informácie na tejto stránke pochádzajú z internetu a spory o autorské práva s touto stránkou nesúvisia. Musíte úplne vymazať vyššie uvedený obsah zo svojho počítača do 24 hodín od stiahnutia. Ak sa vám program páči, podporte originálny softvér, zakúpte si registráciu a získajte lepšie originálne služby. Ak dôjde k akémukoľvek porušeniu, kontaktujte nás prosím e-mailom.

Mail To:help@itsvse.com