對於異步的理解。html
以前對於同步方法和使用async、await的異步方法一直很迷惑。web
我以爲等待執行結果的異步和同步方法有什麼區別嗎?編程
他們的執行順序都是同樣的啊?服務器
不是都須要等待執行結果嗎?網絡
今天翻了一下《C#高級編程》,纔算搞清楚這裏面的差別,原來使用了async、await的異步是不會阻塞線程的。異步
首先說說關於同步方法和異步方法的區別。async
好比說web網站加載一些網絡資源,是使用同步方法請求,那麼此時web網站的用戶界面將會阻塞,直到該方法完成對資源的網絡調用,並完成結果分析。網站
完成這些調用所需的時間取決與網絡速度,以及服務器當前的工做量。線程
對於用戶來講,界面卡掉、一段時間的等待都是不愉快的。htm
因此使用異步調用。
異步能夠避免阻塞,在此期間能夠作更多的事情。
可是異步有一個缺陷,相對於同步來講,它對於程序的流程充滿了不肯定性,順序可能會顛倒。
因此在某些場景,好比說有多個異步方法被調用,他們是有依賴關係的,後面的異步方法須要使用到以前異步方法的結果,咱們須要按順序調用這些異步方法,這個時候就須要使用async、await關鍵字來等待執行的結果,可是它不會阻塞線程。
本文來自 木莊網絡博客> 掃盲-對異步的理解