epoll为什么比select和poll效率更高
生活随笔
收集整理的這篇文章主要介紹了
epoll为什么比select和poll效率更高
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
基于 select 和 poll 方法的程序中,因為大量操作的消耗與當前連接數 n 成線性相關,從而導致單個任務的資源消耗和當前任務的關系是 O(n)。所以隨著連接數目增大,積累起來的資源消耗很大,結果就是系統吞吐量和機器性能不匹配。為了解決該問題,進而發展出了 epoll、kqueue 和 /dev/poll 這三套利器。epoll 已經成為處理并發、高性能的代表。它們的工作原理:
一是避免了每次調用 select 或 poll 時內核用于分析參數建立事件等待結構的開銷,取而代之的是維護一個長期的事件關注表,應用程序通過句柄修改這個列表和捕獲 I/O 事件;
二是避免了 select 或 poll 返回后,應用程序掃描整個句柄表的開銷,取而代之的是直接返回具體的事件列表;
通過以上方法,徹底擺脫了具體操作的消耗與當前連接數 n 的線性關系,極大地提高了服務器處理能力。
關于 epoll 和其他方法的使用參見我的其他博客,有問題和疑問可以給我郵件或者評論哦~:-D
總結
以上是生活随笔為你收集整理的epoll为什么比select和poll效率更高的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C语言——计算完数
- 下一篇: sift vlfeat 学习