日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

4、epoll函数

發布時間:2024/1/17 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 4、epoll函数 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1、常用函數

??? 有:epoll_createepoll_ctlepoll_waitLinux-2.6.19又引入了可以屏蔽指定信號的epoll_wait: epoll_pwait。至此epoll家族已全。其中epoll_create用來創建一個epoll文件描述符,epoll_ctl用來添加/修改/刪除需要偵聽的文件描述符及其事件,epoll_wait/epoll_pwait接收發生在被偵聽的描述符上的,用戶感興趣的IO事件。epoll文件描述符用完后,直接用close關閉即可,非常方便。事實上,任何被偵聽的文件符只要其被關閉,那么它也會自動從被偵聽的文件描述符集合中刪除,很是智能。

每次添加/修改/刪除被偵聽文件描述符都需要調用epoll_ctl,所以要盡量少地調用epoll_ctl,防止其所引來的開銷抵消其帶來的好處。有的時候,應用中可能存在大量的短連接(比如說Web服務器),epoll_ctl將被頻繁地調用,可能成為這個系統的瓶頸。

2、函數簡介

#include <sys/epoll.h>

1)創建

int epoll_create(int size);

創建一個epoll的句柄,size用來告訴內核這個監聽的數目一共有多大,內核2.6.8后沒有意義,大于0即可。注意,select()中的第一個參數,是給出最大監聽的fd+1的值。當創建好epoll句柄后,它就是會占用一個fd值,在linux下如果查看/proc/進程id/fd/,是能夠看到這個fd的,所以在使用完epoll后,必須調用close()關閉,否則可能導致fd被耗盡。

2)注冊

int epoll_ctl(int epfd, int opint fdstruct epoll_event *event)

epoll的事件注冊函數,它不同與select()是在監聽事件時告訴內核要監聽什么類型的事件,而是在這里先注冊要監聽的事件類型。第一個參數是epoll_create()的返回值,第二個參數表示動作,用三個宏來表示:

EPOLL_CTL_ADD:注冊新的fdepfd中;

EPOLL_CTL_MOD:修改已經注冊的fd的監聽事件;

EPOLL_CTL_DEL:從epfd中刪除一個fd

第三個參數是需要監聽的fd,第四個參數是告訴內核需要監聽什么事,struct epoll_event結構如下:

typedef union epoll_data {

??? void *ptr;

??? int fd;

??? __uint32_t u32;

??? __uint64_t u64;

} epoll_data_t;

struct epoll_event {

? __uint32_t events;? /* Epoll events */

? epoll_data_t data;? /* User data variable */

};

3)等待事件的發生

int epoll_wait(int epfd,struct epoll_event * eventsint maxeventsint timeout)

等待事件的產生,類似于select()調用。events:返回的epoll事件的數組;maxevent:每次能處理的事件數;

timeout:超時值,以毫秒計;-1表示無限期等待

返回值

>0:事件個數

=0:超時

-1:出錯

再執行該函數成功后,進行連接處理過程中,來的新的連接請求,將加入下一次處理的集合中。

??? 在許多測試中我們會看到如果沒有大量的idle-connection或者dead-connectionepoll的效率并不會比select/poll高很多,但是當我們遇到大量的idle-connection(例如WAN環境中存在大量的慢速連接),就會發現epoll的效率大大高于select/poll

轉載于:https://www.cnblogs.com/mydomain/archive/2011/09/02/2163275.html

總結

以上是生活随笔為你收集整理的4、epoll函数的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。