阻塞與非阻塞socket的優缺點

2021-07-22 10:33:21 字數 757 閱讀 9170

謂阻塞方式的意思是指,當試圖對該檔案描述符進行讀寫時,如果當時沒有東西可讀,或者暫時不可寫,程式就進入等待狀態,直到有東西可讀或者可寫為止。

而對於非阻塞狀態,如果沒有東西可讀,或者不可寫,讀寫函式馬上返回,而不會等待。

非阻塞,就是程序或執行緒執行此函式時不必非要等待事件的發生,一旦執行肯定返回,以返回值的不同來反映函式的執**況,如果事件發生則與阻塞方式相同,若事件沒有發生則返回乙個**來告知事件未發生,而程序或執行緒繼續執行,所以效率較高

簡單的講,阻塞就是get,非阻塞就是put

阻塞好控制,不傳送完資料程式不會走下去。但是對效能有影響。

非阻塞不太好控制,可能和能力有關,但是效能會得到很大提公升。

阻塞式的程式設計方便。

非阻塞的程式設計不方便,需要程式設計師處理各種返回值

阻塞處理簡單,非阻塞處理複雜

阻塞效率低,非阻塞效率高

阻塞模式,常見的通訊模型為多執行緒模型,服務端accept之後,對每個socket建立乙個執行緒去recv。

邏輯上簡單,適用於併發量小

(客戶端數目少),

連續傳輸大資料量的情況下

,比如檔案伺服器。還有就是在客戶端recv伺服器訊息的時候也經常用,因為客戶端就乙個socket,用阻塞模式不影響效率,而且程式設計邏輯上要簡單得多。

非阻塞模式,常見的通訊模型為select模型和iocp模型。

適用於高併發,資料量小的情況,比如聊天室

。客戶端多的情況下,如果採用阻塞模式,需要開很多執行緒,影響效率。另外,客戶端一般不採用非阻塞模式。

socket阻塞與非阻塞

何為阻塞?在以上過程中若連線還沒到來,那麼接受阻塞,程式執行到這裡不得不掛起,cpu轉而執行其他執行緒。在以上過程中若資料還沒準備好,請閱讀會一樣也會阻塞。阻塞式網路io的特點 多執行緒處理多個連線。每個執行緒擁有自己的棧空間並且占用一些cpu時間。每個執行緒遇到外部為準備好的時候,都會阻塞掉。阻塞...

Socket 阻塞與非阻塞模式

阻塞模式 windows套接字在阻塞和非阻塞兩種模式下執行i o操作。在阻塞模式下,在i o操作完成前,執行的操作函式一直等候而不會立即返回,該函式所在的執行緒會阻塞在這裡。相反,在非阻塞模式下,套接字函式會立即返回,而不管i o是否完成,該函式所在的執行緒會繼續執行。在阻塞模式的套接字上,呼叫任何...

socket的阻塞與非阻塞模式

阻塞模式 windows套接字在阻塞和非阻塞兩種模式下執行i o操作。在阻塞模式下,在i o操作完成前,執行的操作函式一直等候而不會立即返回,該函式所在的執行緒會阻塞在這裡。相反,在非阻塞模式下,套接字函式會立即返回,而不管i o是否完成,該函式所在的執行緒會繼續執行。在阻塞模式的套接字上,呼叫任何...