Linux Epoll 详解

Epoll 作为Linux 系统中的核心武器之一,在高吞吐、高并发的IO系统中经常遇见Epoll的身影,Redis、Nginx、Skynet等都使用到了IO多路复用技术。我们可以先创建一个epoll对象,再将fd(File Descriptor 文件描述符对象)注册到epoll对象里,之后便能通过调用epoll对象的查询函数来获取准备好事件的fd对象。

epoll提供了三个API接口,分别为epoll_create、epoll_ctrl、epoll_wait,下面分别说明这三个接口的用处。

epoll_create函数

函数声明:int epoll_create(int size);

__size参数 相当于提供给内核一个提示,当前需要监听的fd个数

返回值:当前Epoll对象的fd

Unxi中一切皆文件,在Epoll中也是 。这里Epoll便是一个虚拟文件对象,epoll_create函数了创建一个代表Epoll对象的fd 。这里生成一个epoll专用的文件描述符 在内核申请一空间,用来存放你想关注的socket fd上是否发生以及发生了什么事件。

注意:当创建好epoll句柄后,它变回占用一个fd值。使用完epoll后,必须调用close函数来关闭,不然就可能导致fd被耗尽。

epoll_ctl函数

函数声明:int epoll_ctl (int epfd, int op, int fd,struct epoll_event *event);

epfd:通过epoll_create方法创建的Epoll 对象

op:将要进行的操作例如注册事件,可能的取值EPOLL_CTL_ADD (添加监听的fd)、EPOLL_CTL_MOD (修改监听的fd)、EPOLL_CTL_DEL (删除监听的fd)

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值