Denna artikel är en spegelartikel om maskinöversättning, klicka här för att hoppa till originalartikeln.

Utsikt: 221|Svar: 1

[Källa] . PriorityQueue prioritetskö i NET6

[Kopiera länk]
Publicerad den 2025-10-20 10:02:53 | | | |
.NET 6 introducerar en ny samlingstyp, PriorityQueue, som, som namnet antyder, lägger till prioritetsstöd ovanpå vanlig Queue. Not: Han ärIcke-gängsäker, du måste vara uppmärksam på trådsäkerhet.

Källa:Inloggningen med hyperlänken är synlig.

Sätta igång

Låt oss titta på ett enkelt exempel på användning:
Exempelutdata:



Du kan se att ordningen på utdata är motsatt den ordning vi lade till, PriorityQueue börjar med minsta prioritet vid avkö, ju lägre värde, desto högre prioritet, högre prioritet, högre prioritet, ju högre prioritet, desto högre prioritet får utdata, om vi vill ha maximal utgång först, är det okej, svaret är ja, men vi behöver specificera våra egna prioriteringsjämförelseregler, du kan hänvisa till följande exempel

Scener

Med automatisk sortering med prioritet kan vi överväga att använda PriorityQueue när vi behöver göra viss automatisk sortering

Meddelandekö

Med PriorityQueue kan en prioriterad meddelandekö implementeras, vilket gör det möjligt för användare att ange prioriteten för ett meddelande när de skickar ett meddelande, och den prioriteras vid konsumtion.

I exemplet ovan anger vi en int som typen av Priority som standard, och slår ihop vissa meddelanden i kön, men det finns ofta många meddelanden, och det kan finnas situationer med samma prioritet, som vi kan användaTid och int som en federerad prioritetstypDu kan hänvisa till följande exempel:
Ett exempel på utdata är följande:



Av ovanstående resultat kan man se att i fallet med prioritet kommer vi först att behandla meddelanden med kortare tid, eller så kan vi anpassa sorteringsmetoden efter våra egna behov och anpassa logiken för prioriteringsjämförelse.

Rang

PriorityQueue kan också användas i många rankningsapplikationer, såsom en ranking av studenters prestation

Ta en titt på exempelkoden nedan:
Ovanstående lista är en lista över betyg, skriv bara några testdata, genom PriorityQueues UnorderedItems kan vi få fram data innan sortering, och det är också ordningen vi går med i kön (Enqueue), standardjämförelsen är den lilla första, det vill säga låga poängen är först, sedan vill vi sortera från störst till minsta behöver vi anpassa jämförelsemetoden.

Ovanstående High2LowComparer är en anpassad jämförelse, som faktiskt är en invers av jämförelseresultatet, och koden är som följer:
Resultatet ovan är följande:



Mer

Det finns en zset(sortedSet)-typ av data i Redis som kan göra liknande saker, men det finns fortfarande vissa skillnader mellan zset och PriorityQueue, zset är en mängd, en samling som automatiskt deduplicerar, medan PriorityQueue fortfarande är en kö kommer inte att dedupliceras, zset kan ändra prioriteten (poängen) för motsvarande element, men PriorityQueue För närvarande stöds det inte att ändra motsvarande prioritet för ett element

PriorityQueue kan lösa några av våra problem, men det finns några saker att tänka på när du använder det:

  • För det första, om prioriteten är densamma, kan ordningen på utdata vara annorlunda, vilket bestäms av dess interna implementeringsalgoritm, och ordningen kan inte garanteras strikt
  • PriorityQueue är icke-trådsäker, och trådsäkra problem måste noteras
  • Peek-metoden i PriorityQueue hämtar bara det kommande elementet i kön, men tar inte bort det från kön
(Slut)




Föregående:Douyin Mall-crawleranalys positionering 6 gudar, riskkontrollanalys, nu borde det vara 7 gudar X-Perseus
Nästa:Länkar till EBPF-relaterad kunskap
 Hyresvärd| Publicerad 2025-10-20 10:09:05 |
Typiska applikationsscenarier

Sjukhusets nödsamtal, uppgiftsschemaläggningssystem, till exempel: prioriterat samtal för kritiskt sjuka patienter, koden är följande:
Friskrivning:
All programvara, programmeringsmaterial eller artiklar som publiceras av Code Farmer Network är endast för lärande- och forskningsändamål; Ovanstående innehåll får inte användas för kommersiella eller olagliga ändamål, annars kommer användarna att bära alla konsekvenser. Informationen på denna sida kommer från internet, och upphovsrättstvister har inget med denna sida att göra. Du måste helt radera ovanstående innehåll från din dator inom 24 timmar efter nedladdning. Om du gillar programmet, vänligen stöd äkta programvara, köp registrering och få bättre äkta tjänster. Om det finns något intrång, vänligen kontakta oss via e-post.

Mail To:help@itsvse.com