Dans le développement quotidien, nous pouvons utiliser des files d’attente, qui sont une structure de stockage permettant d’obtenir le « premier entrant, premier sorti ».
Scénarios d’application : rédiger des journaux, envoyer des e-mails, etc
Si nous devons enregistrer le journal d’interface de chaque utilisateur demandant nos données, nous n’avons pas besoin d’écrire un journal à chaque demande de l’utilisateur, nous pouvons mettre le contenu du journal dans la file d’attente et laisser d’autres threads l’exécuter, afin de ne pas affecter l’efficacité de l’application.
Un autre avantage est que l’ajout de données à la file d’attente en cas de concurrence en utilisant un seul thread pour exécuter les données de la file peut éviter de nombreuses exceptions ; en cas de concurrence (multithread), l’accès au même fichier physique entraînera des exceptions. (sous réserve de disponibilité)
Approche universelle par file d’attente :
C’est une classe abstraite, et vous devez hériter de cette classe d’abstraction et implémenter la méthode d’abstraction Exécuter. Comme je ne sais pas quel type de données vous souhaitez traiter, des génériques sont utilisés ici, c’est-à-dire que l’entité est de type chaîne, les paramètres de la méthode sont de type chaîne, et les données que vous traitez sont des données de type chaîne.
La file thread-safe ConcurrentQueue garantit qu’il n’y aura aucune exception dans un environnement multithread.
ManualResetEvent pour contrôler le signal du thread,Par le passé, nous vérifiions la file d’attente pour les données toutes les quelques secondes ou minutesMaintenant, nous ajoutons les données à la file d’attente et il suffit de passer un signal !
Utilisation :
(Fin)
|