select與poll的區別

2021-10-10 20:58:32 字數 789 閱讀 1492

select

與poll

的區別 1

、io多路復⽤: 1

、概念:

io多路復⽤是指核心⼀旦發現程序指定的⼀個或者多個

io條件準備讀取,它就通知該程序。 2

、優勢:與多程序和多執行緒技術相⽐,

i/o多路復⽤技術的最⼤優勢是系統開銷⼩,系統不必建立程序

/執行緒,也不必維護這些進 程

/執行緒,從⽽⼤⼤減⼩了系統的開銷。 3

、系統:⽬前⽀持

i/o多路復⽤的系統調⽤有

select

,pselect

,poll

,epoll。

2、select

:select

⽬前⼏乎在所有的平台上⽀持,其良好跨平台⽀持也是它的⼀個優點。

select

的⼀個缺點在於單個程序能夠監視的

⽂件描述符的數量存在最⼤限制,在

linux

上⼀般為

1024

,可以通過修改巨集定義甚⾄重新編譯核心的⽅式提公升這⼀限制,但是這樣也

會造成效率的降低。 3

、poll

:它沒有最⼤連線數的限制,原因是它是基於鍊錶來儲存的,但是同樣有⼀個缺點:

a. ⼤量的fd

的陣列被整體複製於⽤戶態和核心位址空間之間,⽽不管這樣的複製是不是有意義。

b. poll

還有⼀個特點是「⽔平觸發」,如果報告了

fd後,沒有被處理,那麼下次

poll

時會再次報告該fd。

多路復用select與poll

華清遠見嵌入式學院 講師。在unix linux中有4中io模型,分別為 1 阻塞io 2 非阻塞io 3 io多路復用 4 訊號驅動io 這幾種io模型,阻塞io是最長用到的,並且操作相對簡單,但是缺點在於效率低下,尤其是在,同時操作多個io的時候,不能隨時的處理各個io操作。而非阻塞io可以解決...

多路復用select與poll

華清遠見嵌入式學院 講師。在unix linux中有4中io模型,分別為 1 阻塞io 2 非阻塞io 3 io多路復用 4 訊號驅動io 這幾種io模型,阻塞io是最長用到的,並且操作相對簡單,但是缺點在於效率低下,尤其是在,同時操作多個io的時候,不能隨時的處理各個io操作。而非阻塞io可以解決...

select和poll的用法

select 函式的作用 系統呼叫select和poll的後端實現,用這兩個系統呼叫來查詢裝置是否可讀寫,或是否處於某種狀態。如果poll為空,則驅動裝置會被認為即可讀又可寫,返回值是乙個狀態掩碼 如何使用select 函式?select 函式的介面主要是建立在一種叫 fd set 型別的基礎上。它...