很多資料都講poll相較于select而言,突破了檔案描述符個數限制,但是我不太明白的是,一個行程能打開的檔案描述符是有限制的,系統能打開的檔案描述符總個數也是有限制的,為什么就說poll沒有檔案描述符的限制呢?
uj5u.com熱心網友回復:
1.行程打開的檔案描述符個數(ulimit -n), 系統能打開的檔案描述符總個數(/proc/sys/fs/file-max) 都是可以手動設定的.2.select支持的最大檔案描述個數受宏FD_SETSIZE限制, 這個值默認為1024,所以說 select有檔案描述符限制.
這個宏是內核定義的, 修改這個宏需要重編內核,超過默認值可能導致select性能低下.
3.poll改進了select的實作, 沒有了檔案描述符限制, 最大限制就是系統能打開的檔案描述符總個數(/proc/sys/fs/file-max)
但是其本質和select是相同的, 都是在遍歷掃描整個檔案描述符集合,當檔案描述符太多的時候,自然也就有性能瓶頸, 所以才引入了epoll.
uj5u.com熱心網友回復:
豁然開朗,謝謝哈??uj5u.com熱心網友回復:
用epoll吧轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/129468.html
標籤:應用程序開發區
上一篇:小白問個小問題
