I/O多路轉接至poll

不同於select使用三個位圖來表示三個fdset的方式,poll使用了一個人pollfd的指針來實現。



pollfd結構包含了要監視的event和要發生的event,不在使用select“參數-值”的方式。同時,pollffd並沒有最大數量限制(但是數量過大後性能也是會下降)。poll返回後,需要輪詢pollfd來獲取就緒的描述符。


從上面看,select和poll都需要在返回後,通過遍歷文件描述符來獲取已經就緒的socket。 事實上,同時連接的大量客戶端在同一時刻可能只有很少的處於就緒狀態,因此隨着監視的描述符數量的增長,其效率也會線性下降。

下邊列舉示例:使用poll監控輸入



結果輸出爲:


運行程序時,如果不輸入,超出timeout設置的時間,就會提示timeout

輸入後,程序會從stdin讀到輸入的內容,回顯到屏幕。






發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章