Cet article est un article miroir de traduction automatique, veuillez cliquer ici pour accéder à l’article original.

Vue: 221|Répondre: 1

[Source] . File de priorité PriorityQueue dans NET6

[Copié le lien]
Publié le 20-10-2025 à 10:02:53 | | | |
.NET 6 introduit un nouveau type de collection, PriorityQueue, qui, comme son nom l’indique, ajoute un support prioritaire au-dessus de la file d’attente ordinaire. Note : Il estNon sûr du filetage, il faut faire attention aux questions de sécurité du filetage.

Source:La connexion hyperlientérée est visible.

Démarrer

Voyons un exemple simple d’utilisation :
Exemple de sortie :



Vous pouvez voir que l’ordre de sortie est opposé à l’ordre que nous avons ajouté : PriorityQueue commence avec la plus petite priorité lors de la défile, plus la valeur est petite, plus la priorité est élevée, plus la priorité est élevée, plus la priorité est élevée, plus la sortie est importante, si nous voulons d’abord la sortie maximale, est-ce acceptable ? La réponse est oui, mais nous devons spécifier nos propres règles de comparaison des priorités, vous pouvez vous référer à l’exemple suivant

Scènes

Avec l’auto-tri avec priorité, nous pouvons envisager d’utiliser PriorityQueue lorsque nous devons faire un tri automatique

File de messages

Avec PriorityQueue, une file de messages prioritaires peut être implémentée, permettant aux utilisateurs de spécifier la priorité d’un message lors de l’envoi d’un message, et elle sera priorisée lors de la consommation.

Dans l’exemple ci-dessus, nous spécifions un int comme type de priorité par défaut, et fusionnons certains messages dans la file d’attente, mais il y a souvent beaucoup de messages, et il peut y avoir des situations avec la même priorité, que nous pouvons utiliserTemps et INT comme type de priorité fédéréeVous pouvez vous référer à l’exemple suivant :
Voici un exemple de sortie :



D’après les résultats ci-dessus, on peut voir qu’en cas de priorité, nous traiterons d’abord les messages en moins de temps, ou nous pouvons personnaliser la méthode de tri selon nos propres besoins et personnaliser la logique de comparaison des priorités.

Rang

PriorityQueue peut également être utilisé dans de nombreuses applications de classement, telles que le classement des performances des élèves

Jetez un œil au code exemple ci-dessous :
La liste ci-dessus est une liste de notes, il suffit d’écrire quelques données de test, grâce à UnorderedItems de PriorityQueue nous pouvons obtenir les données avant le tri, et c’est aussi l’ordre dans lequel nous rejoignons la file (Enqueue), la comparaison par défaut est la petite d’abord, c’est-à-dire que le score le plus bas est la première, puis nous voulons trier du plus grand au plus petit pour personnaliser la méthode de comparaison.

Le High2LowComparer ci-dessus est une comparaison personnalisée, qui est en réalité l’inverse du résultat de la comparaison, et le code est le suivant :
La sortie ci-dessus est la suivante :



Plus

Il existe un type de données zset (sortedSet) dans Redis qui peut faire des choses similaires, mais il existe encore quelques différences entre zset et PriorityQueue, zset est un ensemble, une collection qui se déduplique automatiquement, tandis que PriorityQueue est toujours une file d’attente ne sera pas dédupliquée, zset peut modifier la priorité (score) de l’élément correspondant, mais PriorityQueue Actuellement, il n’est pas supporté de modifier la priorité correspondante d’un élément

PriorityQueue peut résoudre certains de nos problèmes, mais il y a quelques points à garder à l’esprit lors de son utilisation :

  • Tout d’abord, si la priorité est la même, l’ordre de la sortie peut être différent, ce qui est déterminé par son algorithme d’implémentation interne, et l’ordre ne peut pas être strictement garanti
  • PriorityQueue n’est pas thread-safe, et les problèmes thread-safe doivent être signalés
  • La méthode Peek dans PriorityQueue ne récupère que l’élément suivant dans la file, mais ne le retire pas de la file
(Fin)




Précédent:Analyse du crawler du centre commercial Douyin positionnement 6 dieux, analyse de contrôle des risques, maintenant ça devrait être 7 dieux X-Persée
Prochain:Liens vers les connaissances liées à l’EBPF
 Propriétaire| Publié le 20-10-2025 à 10:09:05 |
Scénarios d’application typiques

Appel d’urgence hospitalier, système de planification de tâches, par exemple : appel prioritaire pour les patients en état critique, le code est le suivant :
Démenti:
Tous les logiciels, supports de programmation ou articles publiés par Code Farmer Network sont uniquement destinés à l’apprentissage et à la recherche ; Le contenu ci-dessus ne doit pas être utilisé à des fins commerciales ou illégales, sinon les utilisateurs assumeront toutes les conséquences. Les informations sur ce site proviennent d’Internet, et les litiges de droits d’auteur n’ont rien à voir avec ce site. Vous devez supprimer complètement le contenu ci-dessus de votre ordinateur dans les 24 heures suivant le téléchargement. Si vous aimez le programme, merci de soutenir un logiciel authentique, d’acheter l’immatriculation et d’obtenir de meilleurs services authentiques. En cas d’infraction, veuillez nous contacter par e-mail.

Mail To:help@itsvse.com