Maison >développement back-end >C++ >Comment fonctionnent «Async» et «Await» dans la programmation asynchrone sans les fils d'arrière-plan engendrés?
dans la programmation asynchrone
et compréhension async
await
De nombreux développeurs sont confus quant au mécanisme de travail de
dans la programmation asynchrone. Pour comprendre le mystère de leur utilisation, nous explorerons leurs mécanismes et montrerons la différence entre eux et générerons des fils d'arrière-plan. async
await
clarifiant
utilisation async
await
Votre exemple met l'accent sur l'utilisation de et
async
Dans votre code, après avoir démarré "DosomethingAsync ()", le code continue d'effectuer des opérations qui ne sont pas liées à la tâche. La variable "Access" contient la tâche qui finira. Lorsque vous atteignez l'instruction "Await Access", le code est suspendu et relâché le thread actuel. await
async
Comprendre l'exécution d'arrière-plan
Contrairement à vos hypothèses, "DoSomethingasync ()" ne sera pas exécuté sur le thread d'arrière-plan. Il utilise le thread actuel et démarre l'opération dormante. Une fois terminé, la machine d'état reprend l'exécution et permet de continuer à continuer à exécuter "Button1_Click".
Un exemple asynchrone plus complet
Afin de fournir une compréhension plus claire, veuillez considérer les exemples d'exemples suivants:
dans cette scène:
"myMethodasync ()" démarre "longRuningOperationAsync ()".
<code class="language-csharp">public async Task MyMethodAsync() { Task<int> longRunningTask = LongRunningOperationAsync(); // 这里可以进行独立的工作... // 等待长时间运行的任务 int result = await longRunningTask; // 使用结果... } public async Task<int> LongRunningOperationAsync() { await Task.Delay(1000); // 1秒延迟 return 1; }</code>Le travail indépendant exécutif permet au fil principal de continuer.
Lors de la rencontre "Await LongrunningTask", le thread principal libérera et exécutera la suspension.
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!