更新時間:2023-05-30 來源:黑馬程序員 瀏覽量:
IT就到黑馬程序員.gif)
是利用單個線程來同時監(jiān)聽多個Socket,并在某個Socket可讀、可寫時得到通知,從而避免無效的等待,充分利用CPU資源。
階段一:
①用戶進程調(diào)用select,指定要監(jiān)聽的Socket集合
②內(nèi)核監(jiān)聽對應(yīng)的多個socket
③任意一個或多個socket數(shù)據(jù)就緒則返回readable
④此過程中用戶進程阻塞
階段二:
⑤用戶進程找到就緒的socket
⑥依次調(diào)用recvfrom讀取數(shù)據(jù)
⑦內(nèi)核將數(shù)據(jù)拷貝到用戶空間
⑧用戶進程處理數(shù)據(jù)

IO多路復(fù)用是利用單個線程來同時監(jiān)聽多個Socket,并在某個Socket可讀、可寫時得到通知,從而避免無效的等待,充分利用CPU資源。不過監(jiān)聽Socket的方式、通知的方式又有多種實現(xiàn),常見的有select、poll、epoll。
差異:select和poll只會通知用戶進程有Socket就緒,但不確定具體是哪個Socket,需要用戶進程逐個遍歷Socket來確認(rèn)。epoll則會在通知用戶進程Socket就緒的同時,把已就緒的Socket寫入用戶空間。

1024首播|39歲程序員逆襲記:不被年齡定義,AI浪潮里再迎春天
2025-10-241024程序員節(jié)丨10年同行,致敬用代碼改變世界的你
2025-10-24【AI設(shè)計】北京143期畢業(yè)僅36天,全員拿下高薪offer!黑馬AI設(shè)計連續(xù)6期100%高薪就業(yè)
2025-09-19【跨境電商運營】深圳跨境電商運營畢業(yè)22個工作日,就業(yè)率91%+,最高薪資達13500元
2025-09-19【AI運維】鄭州運維1期就業(yè)班,畢業(yè)14個工作日,班級93%同學(xué)已拿到Offer, 一線均薪資 1W+
2025-09-19【AI鴻蒙開發(fā)】上海校區(qū)AI鴻蒙開發(fā)4期5期,距離畢業(yè)21天,就業(yè)率91%,平均薪資14046元
2025-09-19