Maison >développement back-end >C++ >Attendez par rapport à la programmation asynchrone .NET: pourquoi l'utilisation du «résultat» mène-t-elle à des impasses?
La différence entre et await
: Pourquoi utiliser Result
pour provoquer des serrures mortes? Result
Dans la programmation asynchrone .NET, la compréhension de la différence entre
est très importante. await
Autoriser le traitement collaboratif multi-tâches, et Result
peut provoquer des serrures mortes. await
Result
obstruction await
Result
Le programme de test est suspendu dans l'exemple car il essaie d'utiliser
deux fois simultanément. Cela peut provoquer des verrous morts car la demande HTTP sous-jacente est bloquée lors de l'attente de la réponse. CheckStatusTwiceResultTest
Result
CheckStatus()
Les avantages de
Le mot clé permet l'exécution de la méthode de pause et l'exécution est reproduite une fois l'opération asynchrone terminée. Dans cet exemple, ne s'accrochera pas au moment de l'exécution, car await
les mots clés seront contrôlés à d'autres tâches en attendant la réponse HTTP.
await
CheckStatusAwaitTest
Méthode d'extension Créez un await
et utilisez la commission asynchrone pour définir ses résultats. Cependant, appeler
suspendu. Évitez les verrous morts
ExecuteTaskAsync
Pour éviter les serrures mortes, les résultats de TaskCompletionSource
l'obtention d'opérations asynchrones sont toujours utilisés. La meilleure pratique consiste à éviter d'appeler Result
sur la tâche, en particulier lors de la performance dans des threads d'interface utilisateur ou d'autres environnements sensibles. CheckStatusTwiceResultTest
Utilisez la méthode EXECUTIUTION
dans le code. Pour les méthodes asynchrones, cela n'est pas recommandé, car await
allouera un nouveau fil. Au lieu de cela, l'asynchrone inhérente fournie par le framework .NET doit être utilisée et la méthode doit être définie sur des méthodes asynchrones. Result
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!