io多路復用是什麼意思

2022-05-19 04:16:25 字數 329 閱讀 8212

看了很多好帖子:

個人理解總結:多路復用是多個io資料請求,用1個執行緒處理,處理過程中從核心拷貝到程序讀緩衝區,是阻塞的(現在已經採用mmap位址對映的方法,達到記憶體共享效果,避免真複製,效率很高)。像select,poll,epoll都是多路復用。

非同步socket io:利用現代核心中的多執行緒支援監聽和處理連線,為每個連線啟動乙個新執行緒。這把責任直接交給作業系統,但是會在 ram 和 cpu 方面增加相當大的開銷,因為每個執行緒都需要自己的執行空間。另外,如果每個執行緒都忙於處理網路連線,執行緒之間的上下文切換會很頻繁。這裡的非同步其實是不是真正的非同步,模擬非同步io,將io的操作交給專門的thread來處理而異。

IO多路復用的引出(為什麼要用IO多路復用)

程序數量有限 代價太高 銷毀,上下文切換 受限於cpu 記憶體隔離 程序間通訊代價高 以上都是不可避免的的 受限於cpu 那麼影響的是響應能力 例如1000個執行緒都在發收 全部排程,響應能力肯定受影響 阻塞那麼會有同學說改為非阻塞不就行了嗎?那麼改為非阻塞不能完成收發資訊就會結束,那麼迴圈檢測 e...

I O多路復用

一 五種i o模型 1 阻塞i o模型 最流行的i o模型是阻塞i o模型,預設情形下,所有套介面都是阻塞的。我們以資料報套介面為例來講解此模型 我們使用udp而不是tcp作為例子的原因在於就udp而言,資料準備好讀取的概念比較簡單 要麼整個資料報已經收到,要麼還沒有。然而對於tcp來說,諸如套介面...

i o多路復用

最常見的i o多路復用就是 select poll epoll了,下面說說他們的一些特點和區別吧。select 可讀 可寫 異常三種檔案描述符集的申明和初始化。fd set readfds,writefds,exceptionfds fd zero readfds fd zero writefds ...