同步非同步,阻塞非阻塞他們針對的物件是不一樣的。對於呼叫者來說是阻塞跟非阻塞,被呼叫者是同步跟非同步。同步通訊和非同步通訊:
阻塞與非阻塞:
同步阻塞、非阻塞、多路io復用,都是同步io,非同步必定是非阻塞的。真正的非同步io需要cpu的深度參與。換句話說,只有使用者執行緒在操作io的時候根本不去考慮io的執行全部都交給cpu去完成,而自己只等待乙個完成訊號的時候,才是真正的非同步io。所以,拉乙個子執行緒去輪詢、去死迴圈,或者使用select、poll、epool,都不是非同步,本質上還要去自己執行io的操作。
io多路復用:作業系統為你提供了乙個功能,當你的某個socket接收快取區有資料可讀,或者傳送緩衝區有空間可寫的時候,它可以給你乙個通知。這樣當配合非阻塞的socket使用時,只有當系統通知我哪個描述符可讀了,我才去執行read操作,可以保證每次read都能讀到有效資料而不做純返回-1和eagain的無用功。寫操作類似,作業系統的這個功能通過select/poll/epoll之類的系統呼叫函式來使用,這些函式都可以同時監視多個描述符的讀寫就緒狀況,這樣,多個描述符的i/o操作都能在乙個執行緒內完成,這就叫i/o多路復用,這裡的「復用」指的是復用同乙個執行緒。
阻塞非阻塞與同步非同步
老張愛喝茶,廢話不說,煮開水。出場人物 老張,水壺兩把 普通水壺,簡稱水壺 會響的水壺,簡稱響水壺 1 老張把水壺放到火上,立等水開。同步阻塞 老張覺得自己有點傻 2 老張把水壺放到火上,去客廳看電視,時不時去廚房看看水開沒有。同步非阻塞 老張還是覺得自己有點傻,於是變高階了,買了把會響笛的那種水壺...
同步 非同步與阻塞 非阻塞
怎樣理解阻塞非阻塞與同步非同步的區別?嚴肅的回答 知乎 知乎這個問題下的各個回答,以及這篇blog已經講的很清楚了。也有提到同步阻塞,和非同步非阻塞是繫結的。但也有對同步非阻塞,和非同步非阻塞的模型的闡釋,特此記錄解釋。在這套解釋中,同步和非同步的語義不只是立即返回與否,還是獲取結果已完成的方式是通...
同步 非同步 阻塞與非阻塞
首先來解釋同步和非同步的概念,這兩個概念與訊息的通知機制有關。也就是同步與非同步主要是從訊息通知機制角度來說的。1.1 概念描述 所謂同步就是乙個任務的完成需要依賴另外乙個任務時,只有等待被依賴的任務完成後,依賴的任務才能算完成,這是一種可靠的任務序列。要麼成功都成功,失敗都失敗,兩個任務的狀態可以...