同步非同步的理解 (async await)

2021-08-30 11:18:14 字數 783 閱讀 2488

近期在工作中使用同步非同步方法,出現bug,感覺以前對於同步非同步,阻塞非阻塞理解的有問題,於是在網上重新學習

找到以下的回答

同步:執行乙個操作之後,等待結果,然後才繼續執行後續的操作。

非同步:執行乙個操作後,可以去執行其他的操作,然後等待通知再回來執行剛才沒執行完的操作。

阻塞:程序給cpu傳達乙個任務之後,一直等待cpu處理完成,然後才執行後面的操作。

非阻塞:程序給cpu傳達任我後,繼續處理後續的操作,隔斷時間再來詢問之前的操作是否完成。這樣的過程其實也叫輪詢。

阻塞、非阻塞、多路io復用,都是同步io,非同步必定是非阻塞的,所以不存在非同步阻塞和非同步非阻塞的說法。真正的非同步io需要cpu的深度參與。換句話說,只有使用者執行緒在操作io的時候根本不去考慮io的執行全部都交給cpu去完成,而自己只等待乙個完成訊號的時候,才是真正的非同步io。所以,拉乙個子執行緒去輪詢、去死迴圈,或者使用select、poll、epool,都不是非同步。

參考**:

作者參考**:

ajax同步與非同步理解

每次都混淆了ajax同步與非同步,留此文章 同步和非同步的區別 舉個例子 普通b s模式 同步 ajax技術 非同步 同步 sync 提交請求 等待伺服器處理 處理完畢返回 這個期間客戶端瀏覽器不能幹任何事 非同步 asyn 請求通過事件觸發 伺服器處理 這是瀏覽器仍然可以作其他事情 處理完畢 同步...

非同步和同步概念理解

所謂非同步輸入輸出機制,是指在進行輸入輸出處理時,不必等到輸入輸出處理完畢才返回。所以非同步的同義語是非阻塞 none blocking 舉個例子 普通 b s模式 同步 ajax 技術 非同步 同步 提交請求 等待伺服器處理 處理完畢返回 這個期間客戶端瀏覽器不能幹任何事 非同步 請求通過事件觸發...

同步 非同步 阻塞 非阻塞的理解

同步與非同步是針對應用程式與核心的互動而言的。同步過程中程序觸發io操作並等待或者輪詢的去檢視io操作是否完成。非同步過程中程序觸發io操作以後,直接返回,做自己的事情,io交給核心來處理,完成後核心通知程序io完成。應用程序請求i o操作時,如果資料未準備好,如果請求立即返回就是非阻塞,不立即返回...