程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> .NET實例教程 >> 關於阻塞、非阻塞、異步、同步

關於阻塞、非阻塞、異步、同步

編輯:.NET實例教程
阻塞:  
   比如:recv()這個函數就是阻塞函數,只有讀到數據了才會返回;  
   還有accept()這個函數也是阻塞函數,只有客戶端連接上來了才會返回,不然整個程序都停留在accept出現的地方阻塞著,一直等著有客戶端連接上來accept返回後才繼續執行下去。  
   非阻塞就是和上面相反的意思。    
   同步也就是和阻塞差不多的意思,當然還有線程裡的同步又是另外一個意思了。 
   異步和同步相反。
 
   同步,就是實時處理,比如服務器一接收客戶端請求,馬上響應,這樣客戶端可以在最短的時間內得到結果,但是如果多個客戶端,或者一個客戶端發出的請求很頻繁,服務器無法同步處理,就會造成湧塞。  
   異步,就是分時處理,服務器接收到客戶端請求後並不是立即處理,而是等待服務器比較空閒的時候加以處理,可以避免湧塞。 
 
同步方式指的是發送方不等接收方響應,便接著發下個數據包的通信方式;而異步指發送方發出數據後,等收到接收方發回的響應,才發下一個數據包的通信方式。  
    阻塞套接字是指執行此套接字的網絡調用時,直到成功才返回,否則一直阻塞在此網絡調用上,比如調用recv()函數讀取網絡緩沖區中的數據,如果沒有數據到達,將一直掛在recv()這個函數調用上,直到讀到一些數據,此函數調用才返回;而非阻塞套接字是指執行此套接字的網絡調用時,不管是否執行成功,都立即返回。比如調用recv()函數讀取網絡緩沖區中數據,不管是否讀到數據都立即返回,而不會一直掛在此函數調用上。在實際Windows網絡通信軟件開發中,異步非阻塞套接字是用的最多的。平常所說的C/S(客戶端/服務器)結構的軟件就是異步非阻塞模式的。 
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved