async/await如何使用不會阻塞


await后緊跟一個task這個任務類型 不管是系統定義的還是自己寫的都要是task類型 因為只要是task類型就肯定是異步方法 就有可能會等待但肯定不會被阻塞 等待是因為在執行task類型里的方法

task類型如果是系統定義的為了防止被阻塞有可能會在系統自己的方法里新開了一個線程以保證異步方法不會被阻塞
如果是自己寫的task類型要自己新建一個線程以保證異步方法不會被阻塞

async是一定會另開一個線程 不管是await后面等待的這個task類型方法是系統的方法 還是自己寫的task類型的方法 一定是會在這個方法里開一個線程 要不就會阻塞

異步async提高並發很正常 異步是為了程序本身不卡 加鎖是為了多個請求請求同一個數據的時候不被死鎖 只能單線程執行 這樣效率慢但是保證了程序不會被死鎖

異步是為了保證程序本身的流暢 不會被阻塞

 

假設有個webAPIi有兩個接口A個B 假設(誇張點)用同步的方法請求A接口要30秒 請求B接口要20秒 當請求A接口的時候 在A接口執行20秒的時候請求B接口 請問這是B接口會馬上執行嗎 肯定要等到A接口執行完成才會執行B接口

但是用異步async的方法就兩個接口都可以同時執行 這就提高了系統的並發效率。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM