Maison >développement back-end >C++ >Task.Run vs Async Keyword : quand utiliser chacun pour les opérations asynchrones ?
Asynchronicité dans les méthodes Do Work : Task.Run vs. Mot-clé asynchrone
Dans le domaine de la programmation asynchrone, la distinction entre l'exécution asynchrone et l’attente peut être nuancée. Examinons les spécificités de Task.Run et du mot-clé async et comprenons leurs rôles dans la création de méthodes qui s'exécutent de manière synchrone ou asynchrone.
Exécution asynchrone : Task.Run
La méthode Task.Run permet de déléguer l'exécution du code à un thread en arrière-plan. En créant un objet Task qui encapsule le code, Task.Run vous permet d'exécuter le code de manière asynchrone sans bloquer le chemin d'exécution actuel. Cependant, l'utilisation de Task.Run ne rend pas nécessairement une méthode attendue.
Attention : le mot clé asynchrone
Une méthode asynchrone est une méthode qui peut être suspendue et reprise en attente. expressions. Cela permet aux méthodes de renvoyer des points d'exécution au thread appelant sans blocage. Une méthode déclarée asynchrone peut renvoyer une tâche ou une tâche
Exemple : Exécution sans Async/Await
// Not async because it does not use await private Task<int> DoWorkAsync() { return Task.Run(() => { return 1 + 2; }); }
Dans cet exemple, nous renvoyons une tâche
Exemple : Exécution asynchrone avec Await
private async Task<int> GetWebPageHtmlSizeAsync() { var client = new HttpClient(); var html = await client.GetAsync("http://www.example.com/"); return html.Length; }
Dans cet exemple, la méthode est déclaré asynchrone et utilise wait pour suspendre l'exécution lors de l'opération HttpClient.GetAsync. La méthode reviendra à l'appelant pendant le téléchargement de la page Web, puis reprendra lorsque le résultat sera disponible.
Bonnes pratiques :
Conclusion :
Task.Run facilite l'exécution asynchrone en déléguant le code à un thread d'arrière-plan. Le mot-clé async active l'attente et permet aux méthodes de suspendre et de reprendre l'exécution, offrant ainsi la flexibilité nécessaire pour créer un code réactif et efficace.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!