Linux Epoll 详解

打印 上一主题 下一主题

主题 1700|帖子 1700|积分 5100

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
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)

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

不到断气不罢休

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表