I O多路復用技術(multiplexing)

2021-08-24 23:29:06 字數 414 閱讀 8521

首先,要從你常用的io操作談起,比如read和write,通常io操作都是阻塞i/o的,也就是說當你呼叫read時,如果沒有資料收到,那麼執行緒或者程序就會被掛起,直到收到資料。

l)這樣,當伺服器需要處理1000個連線的的時候,而且只有很少連線忙碌的,那麼會需要1000個執行緒或程序來處理1000個連線,而1000個執行緒大部分是被阻塞起來的。由於cpu的核數或超執行緒數一般都不大,比如4,8,16,32,64,128,比如4個核要跑1000個執行緒,那麼每個執行緒的時間槽非常短,而執行緒切換非常頻繁。這樣是有問題的:

執行緒是有記憶體開銷的,1個執行緒可能需要512k(或2m)存放棧,那麼1000個執行緒就要512m(或2g)記憶體。

執行緒的切換,或者說上下文切換是有cpu開銷的,當大量時間花在上下文切換的時候,分配給真正的操作的cpu就要少很多。

IO多路復用技術詳解

io多路復用 i o是指網路i o,多路指多個tcp連線 即socket或者channel 復用指復用乙個或幾個執行緒。意思說乙個或一組執行緒處理多個tcp連線。最大優勢是減少系統開銷小,不必建立過多的程序 執行緒,也不必維護這些程序 執行緒。io多路復用使用兩個系統呼叫 select poll 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 ...