區分I/O多路複用機制select、poll、epoll

select、poll、epoll 都屬於I/O 多路複用機制。
IO 多路複用機制 用於內核中監視多個文件描述符,一旦某個描述符準備就緒,
能夠通知等待資源的程序進行讀寫操做。

select、poll、epoll 本質上都是同步I/O,進程需要在讀寫就緒後,負責進行讀寫(讀寫過程處於阻塞狀態);
而異步I/O 無需進程自己讀寫,異步I/O會負責自動將數據從內核拷貝到用戶空間中。

區別:

  1. 輪詢對象不同:select、poll需要不斷的輪詢文字描述符FD, 直到資源準備就緒,中間可能要經歷多次休眠和喚醒;
    epoll只需要不斷輪詢就緒鏈表,期間也可能出現多次休眠喚醒,但是他是通過回調函數,
    當fd就緒後將其放入就緒鏈表中,並喚醒休眠的線程epoll只需要不斷輪詢就緒鏈表,
    期間也可能出現多次休眠喚醒,但是他是通過回調函數,當fd就緒後將其放入就緒鏈表中,
    並喚醒休眠的進程
  2. FD就緒通知進程機制:select、poll採用內存拷貝,epoll採用共享內存

轉載自:https://blog.csdn.net/maikelsong/article/details/80520279

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