簡體   English   中英

異步方法在ASP.NET(MVC)中的執行位置是什么?

[英]Where does an async method execute in ASP.NET (MVC)?

許多文章(例如本文 )都說ASP.NET(MVC)中異步方法的優點是它們允許將線程釋放到線程池,從而允許其他請求得到服務。 如果異步方法不使用線程池線程,它們在哪里執行?為什么?

在此上下文中async的主要用途是等待外部資源 - 例如,數據庫(sql或no-sql),Web API(http)等。這些都不需要線程,因為它們不是基於CPU的操作。 數據可用后,工作將在某個時間點恢復。 考慮:

var cust = await someApi.GetCustomerAsync();
var account = await anotherApi.GetAccount(cust.AccountId);
return View(account);

await此處表示進程外工作 - 通常是網絡。 它們不會“運行”任何地方,因為它們不是CPU操作。 當占位任務報告完成, 該方法的下一部分可以恢復,通常通過所捕獲的同步上下文。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM