老張愛喝茶,廢話不說,煮開水。
出場人物:老張,水壺兩把(普通水壺,簡稱水壺;會響的水壺,簡稱響水壺)。
1 老張把水壺放到火上,立等水開。(同步阻塞)
老張覺得自己有點傻
2 老張把水壺放到火上,去客廳看電視,時不時去廚房看看水開沒有。(同步非阻塞)
老張還是覺得自己有點傻,於是變高階了,買了把會響笛的那種水壺。水開之後,能大聲發出嘀~~~~的噪音。
3 老張把響水壺放到火上,立等水開。(非同步阻塞)
老張覺得這樣傻等意義不大
4 老張把響水壺放到火上,去客廳看電視,水壺響之前不再去看它了,響了再去拿壺。(非同步非阻塞)
老張覺得自己聰明了。
所謂同步非同步,只是對於水壺而言。
普通水壺,同步;響水壺,非同步。
雖然都能幹活,但響水壺可以在自己完工之後,提示老張水開了。這是普通水壺所不能及的。
同步只能讓呼叫者去輪詢自己(情況2中),造成老張效率的低下。
所謂阻塞非阻塞,僅僅對於老張而言。
立等的老張,阻塞;看電視的老張,非阻塞。
情況1和情況3中老張就是阻塞的,媳婦喊他都不知道。雖然3中響水壺是非同步的,可對於立等的老張沒有太大的意義。所以一般非同步是配合非阻塞使用的,這樣才能發揮非同步的效用。
同步阻塞 同步非阻塞 非同步區別
對於發生一次網路io,可以分為兩部分 1 等待資料 阻塞 執行緒一直阻塞等待資料。非阻塞 執行緒傳送請求後,不等待資料,通過輪詢 訊號量等方式去獲取資料是否準備好。2 將資料從核心複製到使用者空間 同步 執行緒自己把資料從核心複製到使用者空間,期間不能做其它事情,一直等待資料複製完畢。非同步 系統核...
同步 非同步 阻塞和非阻塞的區別
在進行網路程式設計時,我們常常見到同步 非同步 阻塞和非阻塞四種呼叫方式。這些方式彼此概念並不好理解。下面是我對這些術語的區別。所謂同步,就是在發出乙個功能呼叫時,在沒有得到結果之前,該呼叫就不返回。按照這個定義,其實絕大多數函式都是同步呼叫 例如sin,isdigit等 但是一般而言,我們在說同步...
同步,非同步,阻塞和非阻塞的區別
一 概念 非同步 某個事情需要10s完成。而我只需要呼叫某個函式告訴 來幫我做 然後我再幹其他的事情 同步 某個事情需要10s完成,我需要一直等它完成 等10s 再能繼續後面的工作。阻塞 做某件事情,直到完成,除非超時 非阻塞 嘗試做,如果不能做,就不做 直接返回 如果能做,就做。前兩者和後兩者不容...