2020久久超碰欧美精品最新亚洲欧美日韩久久精品,国产福利电影一区二区三区,亚洲欧美日韩一区在线观看,亚洲国产欧美日韩欧美特级,亚洲欧美日韩成人一区久久,欧美日韩精品一区二区三区不卡,国产欧美日韩va另类影音先锋,亚洲欧美日韩久久精品,亚洲欧美日韩国产成人精品影院,亚洲国产欧美日韩精品一区二区三区,欧美日韩国产成人高清视频,日韩久久精品国产免费观看频道,久久人人爽人人爽从片av高清,国产精品综合一区二区

首頁技術文章正文

什么是IO多路復用?

更新時間:2023-05-30 來源:黑馬程序員 瀏覽量:

IT培訓班

是利用單個線程來同時監聽多個Socket,并在某個Socket可讀、可寫時得到通知,從而避免無效的等待,充分利用CPU資源。

階段一:

①用戶進程調用select,指定要監聽的Socket集合

②內核監聽對應的多個socket

③任意一個或多個socket數據就緒則返回readable

④此過程中用戶進程阻塞

階段二:

⑤用戶進程找到就緒的socket

⑥依次調用recvfrom讀取數據

⑦內核將數據拷貝到用戶空間

⑧用戶進程處理數據

1685442517541_131.png

IO多路復用是利用單個線程來同時監聽多個Socket,并在某個Socket可讀、可寫時得到通知,從而避免無效的等待,充分利用CPU資源。不過監聽Socket的方式、通知的方式又有多種實現,常見的有select、poll、epoll。

差異:select和poll只會通知用戶進程有Socket就緒,但不確定具體是哪個Socket,需要用戶進程逐個遍歷Socket來確認。epoll則會在通知用戶進程Socket就緒的同時,把已就緒的Socket寫入用戶空間。

1685442623281_132.png

分享到:
在線咨詢 我要報名
和我們在線交談!