Tento článek je zrcadlovým článkem o strojovém překladu, klikněte zde pro přechod na původní článek.

Pohled: 221|Odpověď: 1

[Zdroj] . PriorityQueue prioritní fronta v NET6

[Kopírovat odkaz]
Zveřejněno 2025-10-20 10:02:53 | | | |
.NET 6 zavádí nový typ kolekce, PriorityQueue, který, jak název napovídá, přidává podporu priorit nad rámec běžné fronty. Poznámka: JeNe-bezpečný vůči vláknům, musíte věnovat pozornost bezpečnostním problémům s vlákny.

Zdroj:Přihlášení k hypertextovému odkazu je viditelné.

Rozjet

Podívejme se na jednoduchý příklad použití:
Příklad výstupu:



Vidíte, že pořadí výstupů je opačné než pořadí, které jsme přidali. PriorityQueue začíná s nejmenší prioritou při vyřazení fronty, čím menší hodnota, tím vyšší priorita, tím vyšší priorita, čím vyšší priorita, tím vyšší priorita, tím větší priorita výstup, pokud chceme nejdřív maximální výstup, je to v pořádku? Odpověď je ano, ale musíme si stanovit vlastní pravidla pro porovnání priorit, můžete se podívat na následující příklad

Scény

S automatickým tříděním s prioritou můžeme zvážit použití PriorityQueue, když potřebujeme provést nějaké automatické třídění

Fronta zpráv

S PriorityQueue lze implementovat frontu prioritních zpráv, která umožňuje uživatelům při odeslání zprávy určit prioritu a při jejím spotřebování bude prioritizována.

V uvedeném příkladu specifikujeme int jako výchozí typ priority a některé zprávy sloučíme do fronty, ale často je zpráv mnoho a mohou nastat situace se stejnou prioritou, které můžeme použítČas a int jako federovaný typ priorityMůžete se odvolat na následující příklad:
Příklad výstupu je následující:



Z výše uvedených výsledků je vidět, že v případě priority nejprve zpracujeme zprávy s menším časem, nebo můžeme třídění přizpůsobit vlastním potřebám a logiku porovnání priorit.

Hodnost

PriorityQueue lze také použít v mnoha aplikacích pro hodnocení pořadí, například v žebříčku studentských výkonů

Podívejte se na ukázkový kód níže:
Výše uvedený seznam je seznam známek, stačí napsat pár testovacích dat, přes PriorityQueue UnorderedItems můžeme data získat před tříděním, a je to také pořadí, v jakém se připojujeme do fronty (Enqueue), výchozí porovnání je malé jako první, tedy nejnižší skóre, pak chceme třídit od největšího k nejmenšímu a musíme přizpůsobit způsob porovnání.

Výše uvedený High2LowComparer je vlastní porovnání, které je ve skutečnosti inverzí výsledku porovnání, a kód je následující:
Výstup výše je následující:



Více

V Redis existuje typ dat zset(sortedSet), který dokáže podobné věci, ale stále existují určité rozdíly mezi zset a PriorityQueue, zset je množina, kolekce, která automaticky deduplikuje, zatímco PriorityQueue je stále Queue nebude deduplikována, zset může upravit prioritu (skóre) odpovídajícího prvku, ale PriorityQueue V současnosti není podporováno měnit odpovídající prioritu prvku

PriorityQueue může některé naše problémy vyřešit, ale je třeba mít na paměti několik věcí při jeho používání:

  • Za prvé, pokud je priorita stejná, může být pořadí výstupu odlišné, což určuje jeho interní implementační algoritmus, a pořadí nelze striktně zaručit
  • PriorityQueue není bezpečný pro vlákna a je třeba upozornit na problémy s bezpečností vláken
  • Metoda Peek v PriorityQueue načte pouze nadcházející prvek ve frontě, ale neodstraní jej z fronty
(Konec)




Předchozí:Analýza crawleru v Douyin Mall s umístěním 6 bohů, analýza kontroly rizik, nyní by to mělo být 7 bohů X-Perseus
Další:Odkazy na znalosti související s EBPF
 Pronajímatel| Zveřejněno 2025-10-20 10:09:05 |
Typické aplikační scénáře

Volání do nemocnice, systém plánování úkolů, například: prioritní volání pro kriticky nemocné pacienty, kód je následující:
Zřeknutí se:
Veškerý software, programovací materiály nebo články publikované organizací Code Farmer Network slouží pouze k učení a výzkumu; Výše uvedený obsah nesmí být používán pro komerční ani nelegální účely, jinak nesou všechny důsledky uživatelé. Informace na tomto webu pocházejí z internetu a spory o autorská práva s tímto webem nesouvisí. Musíte výše uvedený obsah ze svého počítače zcela smazat do 24 hodin od stažení. Pokud se vám program líbí, podporujte prosím originální software, kupte si registraci a získejte lepší skutečné služby. Pokud dojde k jakémukoli porušení, kontaktujte nás prosím e-mailem.

Mail To:help@itsvse.com