99偷拍视频精品区一区二,口述久久久久久久久久久久,国产精品夫妇激情啪发布,成人永久免费网站在线观看,国产精品高清免费在线,青青草在线观看视频观看,久久久久久国产一区,天天婷婷久久18禁,日韩动漫av在线播放直播

網絡編程中常見的5種I/O模型-創新互聯

I/O模型

目前創新互聯建站已為千余家的企業提供了網站建設、域名、雅安服務器托管、網站托管、服務器托管、企業網站設計、越城網站維護等服務,公司將堅持客戶導向、應用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協力一起成長,共同發展。

Unix下共有五種I/O模型:

1>:阻塞I/O

2>:非阻塞I/O

3>:I/O多路復用

4>:信號驅動I/O

5>:異步I/O

其中前四種是同步I/O模型,只有第五種是異步的。

同步與異步:

這里的同步和兩個實體之間通信中的同步的概念是不一樣的,這里的同步是指關于這個I/O中的一系列動作都需要自己來完成,無論你是原地等待事件的發生(阻塞)還是當某個事件已經準備好的時候你去完成后面的的動作(非阻塞)都屬于同步。

異步,它是指是調用另一個執行者去完成,當執行者發現要處理的時間后調用你,你再完成這件事情,執行的過程和你的動作是不牽扯的。

阻塞與非阻塞:

阻塞是指,等待某個事件的發生,如果它沒有發生則一直等待下去直到事件發生為止。

非阻塞,不需要死死的等待,當它有返回的時候再去處理。

1>阻塞I/O

使用的I/O函數,導致程序阻塞,等待數據,如果數據沒有準備好則一直等待。

例如我們使用的阻塞式的socket創建套接字的時候,調用accept/recvfrom/connect...等都會是阻塞式的等待連接,請求或者數據的到來

網絡編程中常見的5種I/O模型

阻塞式的函數實現起來很簡單,但它有很多的問題,首先作為一個網絡的服務器,阻塞式的等待會浪費大量的資源和時間,當服務器調用函數sendto給遠端的一個客戶端發送數據時,這時候不做其他的事情那么往后的動作都堵塞在后面,這樣顯然是不合適的,解決這種問題的方法往往是創建一個進程或者線程去解決這件事,因為進程的開銷遠遠地大于線程的開銷,所以使用多線程的方法解決是很行得通的。

阻塞式的I/O的好處就是它非常的穩定,他能保證連接保證接受和發送數據的確定性,這是大多大的互聯網公司使用多線程的原因,并且使用線程池也會大大增加線程開啟的效率。

2>非阻塞式I/O

調用socket函數并將其設置為非阻塞模式,設置方式,linux下調用fcntl()函數。

非阻塞方式下,當前執行流不再以睡眠的方式來等待請求或者數據的到來,而采用輪詢的方式,這種方式的運作流程是這樣的,每隔一個時間段便返回一次,如果有數據到來則返回,如果沒有,則返回一個錯誤碼WSAEWOULDBLOCK,我們需要不斷的用循環來等待數據的成功返回,這個過程往往會占用大量的CPU。

非阻塞的缺點,雖然他不用再使等待太僵硬,但它不可避免的一次只能等待一個事件的到來。

3>信號驅動I/O

在TCPsocket中發生以下事件均會產生SIGIO信號,因為在同一個時候產生這種信號的原因太多我們不能區分到底是哪一種情況產生的SIGIO信號,所以在TCP中信號驅動是不太適合使用的,相反在UDP中卻比較適合使用。

網絡編程中常見的5種I/O模型

信號驅動的工作方式如下圖所示

網絡編程中常見的5種I/O模型

4>I/O多路復用。

這種方式下的工作方式就比較特別了,按TCPsocket來舉例,他會當listen到一個新的鏈接的時候將它放到一個集合中,當這個集合中的套接字有讀的情況,我們便讀取,有寫的情況,我們便寫,它是非阻塞I/O和信號驅動I/O再加上可以等待多個,這三個的合體,常見的函數有select,poll,epoll等,這些函數會在后面的博客中細細講述。

它的缺點就是,無論是上面所述的哪種函數,每次發送或者接受一個數據都會進入兩次內核與用戶的轉換。

I/O多路復用的模型如下圖

網絡編程中常見的5種I/O模型

5>異步I/O

當一個異步過程調用發出后,調用者不能立刻得到結果。實際處理這個調用的部件在完成后,通過狀態、通知和回調來通知調用者的輸入輸出操作

網絡編程中常見的5種I/O模型

5種I/O模型的對比如下圖

網絡編程中常見的5種I/O模型

可以看出最好的方式是異步I/O了當然它實現起來比較負責,阻塞I/O的可靠性最好。

另外有需要云服務器可以了解下創新互聯scvps.cn,海內外云服務器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務器、裸金屬服務器、高防服務器、香港服務器、美國服務器、虛擬主機、免備案服務器”等云主機租用服務以及企業上云的綜合解決方案,具有“安全穩定、簡單易用、服務可用性高、性價比高”等特點與優勢,專為企業上云打造定制,能夠滿足用戶豐富、多元化的應用場景需求。

本文標題:網絡編程中常見的5種I/O模型-創新互聯
瀏覽路徑:http://www.yijiale78.com/article30/ddcdso.html

成都網站建設公司_創新互聯,為您提供響應式網站自適應網站移動網站建設虛擬主機網站制作定制網站

廣告

聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯

成都app開發公司