之前看到乙個用來形容同步非同步、阻塞非阻塞的比喻,感覺非常形象生動,這裡把它記錄下來。
場景:
你想買一本書,於是你給書店老闆打**詢問,老闆查詢需要花費一段時間,幫你查詢好以後告訴你結果,即書店有沒有這本書。
解決方式:
一、同步
你給老闆打通了**,並一直等待該事件的結果,老闆幫你查詢的過程中不斷**,得到結果以後掛**。
二、非同步
你打**告訴了老闆你的目的以後,掛掉**。老闆查詢到結果會打**通知你。
三、阻塞
你打**以後,自己會被「掛起」(執行緒進入非可執行狀態,在這個狀態下,cpu不會給執行緒分配時間片,即執行緒暫停執行),直到結果返回以後釋放。
四、非阻塞
打**以後,自己就去一邊做別的事情了,不過需要時不時來檢查一下結果是否返回。
1.從以上場景來看,同步非同步的重點是在請求結果的返回方式不同,同步是呼叫者在主動等待這個結果,非同步是被呼叫者通過某種方式來通知呼叫者結果。
2.阻塞非阻塞關注的是在呼叫請求發起以後的過程中,呼叫者即「我」的狀態。
3.有人也許會把阻塞呼叫和同步呼叫等同起來,實際上他是不同的。對於同步呼叫來說,很多時候當前執行緒還是啟用的,只是從邏輯上當前函式沒有返回而已。4.同步io和非同步io的區別就在於:資料拷貝的時候程序是否阻塞!
阻塞io和非阻塞io的區別就在於:應用程式的呼叫是否立即返回!
同步 非同步,阻塞 非阻塞理解
由於同步非同步,阻塞非阻塞都學習了有一段時間了。慢慢了快忘了,所以乾脆趁著寒假把知識點都撿起來,寫出來。同步和非同步是一組概念,阻塞和非阻塞是一組概念。大家不要搞混了,不要把同步和阻塞等價,也不要把非同步和非阻塞等價 戲說不是胡說,改編不是亂編 滑稽 在剛開始理解的時候很容易搞混,我們這樣想,同步和...
關於阻塞 非阻塞 非同步 同步
阻塞 比如 recv 這個函式就是阻塞函式,只有讀到資料了才會返回 還有accept 這個函式也是阻塞函式,只有客戶端連線上來了才會返回,不然整個程式都停留在accept出現的地方阻塞著,一直等著有客戶端連線上來accept返回後才繼續執行下去。非阻塞就是和上面相反的意思。同步也就是和阻塞差不多的意...
關於同步 非同步,阻塞 非阻塞
同步與非同步 同步是指兩個或者多少個流程 行為 之間存在依賴關係,比如流程a必須等待流程b結束之後才能結束。反之非同步就是沒有依賴關係。阻塞與非阻塞 阻塞是指流程a在等待其他流程的結果期間,不能做其他事情,被掛起。反之,非阻塞就是可以做其他事情。看了網上很多說法,都有 同步阻塞,同步非阻塞,非同步阻...