發信人: bripengandre (老老實實做人|踏踏實實做事), 信區: programming
標 題: 同步/非同步 &阻塞/非阻塞總結版(**)
發信站: 武漢白雲黃鶴站 (2023年07月20日11:29:07 星期天), 站內信件
【 以下文字**自 socket 討論區 】
【 原文由 bripengandre 所發表 】
版上已有yacht和popy兄等人的大作,但因為都是討論型作品,所以總結力度不是特別
強。下面我就結合他們的觀點,加上自己的理解,對這個問題來個總結。文中不對之處,
還請各位及時指出^_^
1、首先同步和非同步是時序概念,阻塞和非阻塞是一種響應模式(特別是當資源受限時,
響應很不一樣)。
2、同步可以看作是通訊雙方都清楚的事件流,是通訊協議最重要的部分。沒有同步,就
是沒有共同語言,同步是通訊的前提。
3、為什麼要有非同步?非同步是為了提供併發性而出現的乙個概念(如執行緒就是一種非同步機制
,中斷也是)。
2中已提到同步是通訊的前提,所以所謂的非同步不是就1對1的通訊而說的,而是就
1對多或多對多這樣的通訊整體來說的。所以就具體的1對1通訊來說,非同步需要提供**、
事件或訊號等機制來同步。舉個例子:a程序與b程序存在了耗時的通訊,於是a開乙個執行緒
a1與b周旋,不等a1與b通訊完成而用其它執行緒繼續與c,d等程序通訊,當a1與b通訊完畢後
,採用同步機制(訊號,事件等)來通知a,b程序.這樣從整體上看,a程序與b程序間的通訊是
非同步的,而更為細化點a1與b還是同步的.
4、阻塞與非阻塞的出現也是為了提供併發性而出現的一種實現機制.在單任務機器上阻塞
是必然的,而在多工機器上,阻塞給其它非阻塞提供了更多的排程機會.
阻塞與非阻塞最大的區別是:當操作環境不具備時,阻塞操作不返回,阻塞的執行者就被掛
起,直到操作環境具備時,阻塞操作才返回,阻塞的執行者被喚醒;而非阻塞操作則不然,無
論操作環境是否具備,都是立即返回.
5、正因為同步/非同步與阻塞/非阻塞是兩個不同的概念,所以你中有我,我中有你.同步是
通訊前提,阻塞/非阻塞以及非同步歸根到1對1通訊時都是同步的;非同步是併發思想/概念,沒
有非同步,阻塞/非阻塞就沒了指導思想,阻塞何時變成非阻塞(這個通知機制就是非同步的
概念);阻塞/非阻塞是實現多對多非同步通訊的一種手段,其實,我們用其它手段實現非同步通訊
時,最終還是通過阻塞某些操作並不阻塞另外一些操作來實現的~~
6、總結。同步是邏輯層次上的點對點的一致協商是通訊前提,非同步是併發(包含突發)的代
名詞(寫到最後突然發現的,不知是不是思維走入死胡同了^_^),阻塞/非阻塞是實現併發
的手段。
補充說明:電氣電子通訊中經常提到非同步通訊,這裡的非同步通訊是指通訊雙發的時鐘步調
不怎麼嚴格一致,最終通過起始位和停止位等來實現同步。所以同步是邏輯層次上的點對
點一致協商^_^
寫到這裡,我頭都暈了~~~就扔筆了^_^
--※ 修改:·bripengandre 於 07月20日11:28:52 修改本文·[from: bbs.whnet.edu.cn]
----
※ **:·武漢白雲黃鶴站 bbs.whnet.edu.cn·[from: bbs.whnet.edu.cn]
同步非同步 阻塞非阻塞 總結
同步 非同步 描述網路通訊模式,適用於請求 響應模型 阻塞 非阻塞 描述程序的函式呼叫方式 總結,同步非同步和阻塞非阻塞是兩個不同的概念,用簡單的資料庫查詢來舉乙個例子 如果傳送乙個請求,需要等待資料庫響應,否則將一直等待,這就是同步 如果傳送乙個請求,不需要資料庫響應,就可以繼續傳送下乙個請求 n...
阻塞,非阻塞,非同步,同步
之前一直對這個概念理不太清楚,今天看到一篇文章感覺不錯 本文 老張愛喝茶,廢話不說,煮開水。出場人物 老張,水壺兩把 普通 水壺,簡稱水壺 會響的水壺,簡稱響水壺 1 老張把水壺放到火上,立等水開。同步阻塞 老張覺得自己有點傻 2 老張把水壺放到火上,去客廳看電視,時不時去廚房看看水開沒有。同步非阻...
同步 非同步 阻塞 非阻塞
故事 老王燒開水。出場人物 老張,水壺兩把 普通水壺,簡稱水壺 會響的水壺,簡稱響水壺 老王想了想,有好幾種等待方式 1.老王用水壺煮水,並且站在那裡,不管水開沒開,每隔一定時間看看水開了沒。同步阻塞 老王想了想,這種方法不夠聰明。2.老王還是用水壺煮水,不再傻傻的站在那裡看水開,跑去寢室上網,但是...