select,epoll的比較

機制:數組

select:只支持水平觸發(數據不處理完無限通知)函數

epoll:支持水平觸發和邊緣觸發(僅通知一次)進程

 

單進程監控FD個數事件

select: 由FD_SETSIZE設置,默認值是2048。在大量鏈接的狀況下明顯不足。內存

epoll: 和內存有關,1G內存10W個,通常都夠用。資源

 

內核監控事件的策略效率

select: 順序遍歷監控句柄數組,在監控大量鏈接句柄且數據通訊非活躍狀態下效率低下。監控

epoll: 活躍的句柄經過callback函數進行事件自主通知,資源消耗太小;select

 

程序中獲取事件句柄的方式遍歷

select: 返回整個監控句柄數組,只能順序遍歷查找裏面有事件觸發的句柄

epoll: 返回的數組就是全部已經觸發事件的句柄。

 

數據傳遞

select: 內核態和用戶態之間的數據傳遞須要進行copy

epoll: mmap映射數據空間,免去copy操做

相關文章
相關標籤/搜索