1. 程式人生 > >11.14並發編程的IO模型

11.14並發編程的IO模型

一個 通知 nal 復制 循環 技術分享 網絡傳輸 oda 應用

1..網絡IO的兩個階段 waitdata :網絡傳輸的等待時間

        Copydata:應用程序復制到系統內存的時間

2.阻塞IO模型

多線程 多進程 還是 線程池 進程池等 都是阻塞

技術分享圖片

3.非阻塞IO模型

在非阻塞io中 需要不斷循環詢問操作是否有需要處理的數據

這一來 對應程序而言 效率確實高

但是操作系統而言 你的程序就像一個病毒 CPU將被你強行霸占

當你的TCP程序 沒有連接 沒有數據接收 沒有數據發送時 就是在做無用循環 浪費系統資源

技術分享圖片

4.多路復用

單個進程就可以同時處理多個網絡連接的io

原理: 就是select這個function會不斷的輪回詢問所有的socket 有沒有數據daoda, 一旦有數據到達就會通知用戶進程

Select是阻塞的

結論: select 不適合單個鏈接,多個鏈接才能提現它的優勢

技術分享圖片

5.異步IO模型

技術分享圖片

在wiatdata的時間去做其他事情,等有數據了會發送signal通知

11.14並發編程的IO模型