怎樣理解阻塞非阻塞與同步非同步的區別? - 嚴肅的回答 - 知乎
知乎這個問題下的各個回答,以及這篇blog已經講的很清楚了。
也有提到同步阻塞,和非同步非阻塞是繫結的。
但也有對同步非阻塞,和非同步非阻塞的模型的闡釋,特此記錄解釋。
在這套解釋中,同步和非同步的語義不只是立即返回與否,還是獲取結果已完成的方式是通過主動輪詢(同步),或是通過被動等待訊息通知(非同步)。即同步和非同步關注的是對「結果」的主動等待與否。
而阻塞和非阻塞的語義相同,即在等待結果時是否可以做其他事,(程序是否需要原地等待,即阻塞在讀取結果這個操作不進行其他操作)。
既然非同步已經不需要主動等待,所以一般情況下,非同步阻塞模型是不存在的。但也被用來描述下列情況:
即非同步i/o返回後,通過select監控多個檔案描述符是否讀取完成。此時理解i/o已經返回了,但阻塞地等待結果。
而同步非阻塞,即i/o立即返回後,通過輪詢的方式檢視結果是否已經讀取完成。
阻塞非阻塞與同步非同步
老張愛喝茶,廢話不說,煮開水。出場人物 老張,水壺兩把 普通水壺,簡稱水壺 會響的水壺,簡稱響水壺 1 老張把水壺放到火上,立等水開。同步阻塞 老張覺得自己有點傻 2 老張把水壺放到火上,去客廳看電視,時不時去廚房看看水開沒有。同步非阻塞 老張還是覺得自己有點傻,於是變高階了,買了把會響笛的那種水壺...
同步非同步與阻塞非阻塞
同步非同步,阻塞非阻塞他們針對的物件是不一樣的。對於呼叫者來說是阻塞跟非阻塞,被呼叫者是同步跟非同步。同步通訊和非同步通訊 阻塞與非阻塞 同步阻塞 非阻塞 多路io復用,都是同步io,非同步必定是非阻塞的。真正的非同步io需要cpu的深度參與。換句話說,只有使用者執行緒在操作io的時候根本不去考慮i...
同步 非同步 阻塞與非阻塞
首先來解釋同步和非同步的概念,這兩個概念與訊息的通知機制有關。也就是同步與非同步主要是從訊息通知機制角度來說的。1.1 概念描述 所謂同步就是乙個任務的完成需要依賴另外乙個任務時,只有等待被依賴的任務完成後,依賴的任務才能算完成,這是一種可靠的任務序列。要麼成功都成功,失敗都失敗,兩個任務的狀態可以...