socket的阻塞與非阻塞,同步與非同步

網絡編程中一般提到四種方式,同步/異步,阻塞/非阻塞。如下對它們的概念進行總結ajax

一、同步/異步:主要針對C端編程

同步:所謂同步,就是在C端發出一個功能調用時,在沒有獲得結果以前,調用不返回,也就是必須一件一件事作,等前一件作完了才能作下一件事。瀏覽器

例如普通B/S模式(同步):提交請求->等待服務器處理->處理完畢返回,這個期間客戶端瀏覽器不能幹任何事。服務器

異步:當C端一個異步調用發出後,調用者不能當即獲得結果,實際處理這個調用的部件在完成後,經過狀態,通知和回調來通知調用者。網絡

例如 ajax請求(異步):請求經過事件觸發->服務器處理(這時瀏覽器仍然能夠作其餘事情)->處理完畢異步

二、阻塞/非阻塞 主要針對S端socket

阻塞:阻塞調用是指調用結果返回以前,當前線程會被掛起(線程進入非可執行狀態,在這個狀態下,CPU 不會給線程分配時間片,及線程暫停運行)。函數只有在獲得結果以後纔會返回。函數

非阻塞:與阻塞概念相對應,指在不能當即獲得結果以前,該函數不會阻塞當前線程,而會馬上返回。線程

 注意:事件

socket 默認使用的是非阻塞式異步傳輸通信方式,對應的MFC的CSocket利用的是面向鏈接的TCP協議。

相關文章
相關標籤/搜索