這篇文章將為大家詳細講解有關select、poll、epoll三者的區(qū)別是什么,文章內(nèi)容質(zhì)量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關知識有一定的了解。
創(chuàng)新互聯(lián)建站專業(yè)網(wǎng)站設計制作、網(wǎng)站建設,集網(wǎng)站策劃、網(wǎng)站設計、網(wǎng)站制作于一體,網(wǎng)站seo、網(wǎng)站優(yōu)化、網(wǎng)站營銷、軟文營銷等專業(yè)人才根據(jù)搜索規(guī)律編程設計,讓網(wǎng)站在運行后,在搜索中有好的表現(xiàn),專業(yè)設計制作為您帶來效益的網(wǎng)站!讓網(wǎng)站建設為您創(chuàng)造效益。
fd指文件描述符
select
時間復雜度O(n)
無差別輪詢所有流,找出能讀出數(shù)據(jù),或者寫入數(shù)據(jù)的流,對他們進行操作
poll
然后查詢每個fd對應的設備狀態(tài),
時間復雜度O(n)
poll本質(zhì)上和select沒有區(qū)別,
它將用戶傳入的數(shù)組拷貝到內(nèi)核空間,
但是它沒有最大連接數(shù)的限制,原因是它是基于鏈表來存儲的.
epoll
此時我們對這些流的操作都是有意義的
時間復雜度O(1)
可以理解為event poll
epoll實際上是事件驅(qū)動(每個事件關聯(lián)上fd)的,
但select,poll,epoll本質(zhì)上都是同步I/O,
因為他們都需要在讀寫事件就緒后自己負責進行讀寫,
也就是說這個讀寫過程是阻塞的,
而異步I/O則無需自己負責進行讀寫,異步I/O的實現(xiàn)會負責把數(shù)據(jù)從內(nèi)核拷貝到用戶空間。
AIO也是基于epoll,
把數(shù)據(jù)從內(nèi)核拷貝到用戶空間
關于select、poll、epoll三者的區(qū)別是什么就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。