I O多路復用之poll模型

2021-07-16 21:06:38 字數 615 閱讀 9899

poll函式:

該函式在select函式之後出現,為了克服select的一些缺點,形式如:

poll(struct pollfd  fdarray[ ] ,nfds_t nfds ,int  timeout)

第乙個引數是乙個結構體陣列指標;陣列中的每個元素為乙個結構體struct  pollfd;

第二個引數指定關心的描述符個數;型別為unsigned long 型,一般認為這個數字是我們刻意監聽任意數量的描述符;

第三個引數表示超時時間,(如果大於0的話就是指定等待的

毫秒數,如果等於0表示不等待直接返回,如果為-1表示永遠等待);

struct  epollfd

另外:poll函式並沒有改變傳進去的events成員,通過revents成員來告知使用者;也不再限定可以監聽的描述符的數量;

返回值:

poll函式也有三個返回值,分別為出錯返回,超時返回,正常返回;

出錯返回,一般為在等待期間捕獲到訊號而返回,返回值為-1;

超時返回,返回值為0;

正常返回,返回值為準備好的描述符數量;

缺點:

依然沒有告訴使用者,到底是哪個描述符準備好了,需要你逐個地去排查;

不是執行緒安全的;

I O多路復用之poll

poll的優點 1 poll 不要求開發者計算最大檔案描述符加一的大小。2 poll 在應付大數目的檔案描述符的時候速度更快,相比於select。3 它沒有最大連線數的限制,原因是它是基於鍊錶來儲存的。poll的缺點 1 大量的fd的陣列被整體複製於使用者態和核心位址空間之間,而不管這樣的複製是不是...

IO多路復用之poll

poll和select區別 poll伺服器監視的檔案描述符無上限 poll將輸入 輸出引數進行分離。一 poll函式 函式格式如下所示 include int poll struct pollfd fds,unsigned int nfds,int timeout 不同與select使用三個點陣圖來...

I O多路復用之poll

回憶一下 select介面 intselect int nfds,fd set readfds,fd set writefds,fd set exceptfds,struct timeval timeout select需要我們指定檔案描述符的最大值,然後取 0,nfds 這個範圍內的值檢視是在集合...