Si je suis sur un thread qui n'a pas besoin d'être réactif et pour lequel l'exécution continue dépend du résultat d'un appel lié d'E/S (demande HttpClient) , est-il utile d'implémenter l'appel de manière asynchrone dans .NET? Est-ce que Windows sait que j'attends une opération d'E/S et que je m'abstiens de programmer le thread jusqu'à l'arrivée des données? Je me souviens d'avoir lu quelque part que c'était le cas, mais je crains de toujours avoir de la difficulté à comprendre comment cela fonctionne et quand je peux compter dessus.Planification des opérations liées aux E/S dans .NET
Répondre
Non, il n'y a pas de valeur pour utiliser async. Comme vous le supposez, Windows saura que le thread attend les E/S et ne planifiera pas le thread avant l'arrivée des données. Cependant, l'idée d'async est que vous n'avez pas vraiment besoin de créer un nouveau thread. L'idée d'async est que (je coupe quelques coins ici, il y a une meilleure documentation disponible sur Internet) il essaie de faire quelque chose comme vous le faites ici manuellement. Donc, au lieu de devoir créer un nouveau thread, async le fait pour vous. (Il ne crée pas réellement un nouveau fil, mais vous obtenez l'idée.)
Si cela doit être de haute performance, je ne conseillerais pas de le faire de la façon dont vous l'implémentez maintenant. Async serait beaucoup mieux pour ça. Dans votre cas, lorsque vous faites 1000 requêtes, vous avez 1000 threads, ce qui n'est pas une bonne idée. Async rendrait cela beaucoup plus intelligent et vous donnerait de meilleures performances. L'avantage fondamental de l'utilisation d'async (en dehors de la performance) est que c'est comme si vous programmiez réellement seulement sur le fil d'interface utilisateur. Auparavant, cela aurait bloqué votre application, mais avec async votre application reste réactive. C'est vraiment le principal avantage d'async.
Dans ce cas, je ne ferme pas le thread manuellement, il provient d'IIS ou du framework que nous utilisons par dessus IIS. Donc, je pense que cela ne sera pas préoccupant. – Sprague
Que vous êtes probablement bien. En outre, async ne fonctionnerait probablement pas (du moins pas comme vous l'attendez) car il est plus destiné aux applications Windows/WPF/Metro. –
- 1. Planification des opérations avec Kivy
- 2. Opérations au stencil OpenGL ES
- 3. Thales HSM PIN Opérations liées
- 4. lemmes aux variables liées
- 5. Opérations liées au fichier csv Ruby
- 6. Gestion des performances liées à l'utilisation des attributs dans .NET
- 7. Restauration des modifications liées aux paramètres
- 8. Comment personnaliser la planification des tâches dans .NET?
- 9. Makefile.am contient des erreurs liées aux onglets
- 10. Opérations au niveau du bit dans OPenGL ES
- 11. Ressources liées aux fermetures dans ML?
- 12. Commandes powershell liées aux métriques dans azure
- 13. code python liées aux méthodes
- 14. Accès aux listes liées incorporées dans C
- 15. Tkinter: Toiles liées aux événements
- 16. Doctrines PyCharm liées aux classes
- 17. Différence des méthodes liées aux événements de clic dans jQuery
- 18. Opérations mathématiques à simple précision dans .NET?
- 19. .Net Socket (UDP) Envoi, réception et planification
- 20. Modifier les opérations de journal dans .NET?
- 21. Email planification en C# (ASP. NET)
- 22. Listes liées aux chaînes dans C
- 23. Les questions liées aux rôles dans symfony
- 24. Planification des threads Swingworker
- 25. Quartz .NET pour la planification des jeux en ligne
- 26. .Net 4 Clarification de la planification des tâches?
- 27. Tâches de planification Conseils? .Net, travail SQL?
- 28. Flex Date liées aux fonctions
- 29. Exécution des opérations de journalisation dans MVC .NET
- 30. Comment effectuer des opérations sur des données liées référencées dans une chaîne
Note: Je pense que les inconvénients possibles peuvent être des vérifications d'agrégats, des frais généraux, etc. – Sprague
J'ai sélectionné une réponse mais je suis toujours intéressé de savoir si quelqu'un peut expliquer un peu comment le Le système d'exploitation et l'interface de ligne de commande fonctionnent ensemble pour éviter la planification de threads en attente d'E/S, et ils vont augmenter un commentaire qui peut confirmer positivement les détails. – Sprague