Socket(二) 同步 非同步 阻塞 非阻塞

2021-08-28 08:22:10 字數 427 閱讀 8786

阻塞:客戶端去server端請求10個位元組資料。tcp傳輸分兩步,乙個是head,乙個是body。server端給客戶端傳送head的目的是告訴客戶端,這次tcp會傳10個位元組。然後,body開始傳給客戶端。如果網路很慢,傳到第6個位元組了,那麼,客戶端知道還沒有收完,就會在第6個位元組這裡一直阻塞,直到10個位元組全部收到,客戶端程式才會繼續往下走。

所以,網路通訊使用阻塞的io,是很低效的。

非阻塞:

nio就實現了非阻塞。

非阻塞,有一塊buffer(緩衝區)。sever直接把資料傳到緩衝區,然後,給client傳送乙個訊號。

同步:應用程式直接進行io。

非同步:io操作交給作業系統,應用程式不參與io。

socket 阻塞與非阻塞 同步與非同步

阻塞與非阻塞。所謂阻塞方式的意思是指,當試圖對該檔案描述符進行讀寫時,如果當時沒有東西可讀,或者暫時不可寫,程式就進入等待狀態,直到有東西可讀或者可寫為止。而對於非阻塞狀態,如果沒有東西可讀,或者不可寫,讀寫函式馬上返回,而不會等待。預設情況下,三述符處於阻塞狀態。同步非同步與阻塞和非阻塞是兩種不同...

socket阻塞與非阻塞 同步與非同步概念

看了不少文章,發現socket阻塞 非阻塞 同步 非同步概念講的比較混亂,甚至混用比如非阻塞和非同步。看了unix網路程式設計 五種i o模型 感覺講的比較清晰,現總結下,方便自己記憶理解。本人菜鳥一枚,如果 說得有誤歡迎拍磚指正,在此謝過。阻塞與非阻塞 阻塞與非阻塞io區別在於應用程序的呼叫是否立...

Socket 同步非同步 和 阻塞非阻塞的區別

老張愛喝茶,廢話不說,煮開水。出場人物 老張,水壺兩把 普通水壺,簡稱水壺 會響的水壺,簡稱響水壺 1 老張把水壺放到火上,立等水開。同步阻塞 老張覺得自己有點傻 2 老張把水壺放到火上,去客廳看電視,時不時去廚房看看水開沒有。同步非阻塞 老張還是覺得自己有點傻,於是變高階了,買了把會響笛的那種水壺...