码迷,mamicode.com
首页 > 其他好文 > 详细

从聊天室代码看epoll的使用和对比

时间:2018-04-20 00:04:36      阅读:196      评论:0      收藏:0      [点我收藏+]

标签:nbsp   单位   调用   epoll   目标   通过   time   集合   size   

网上找到了一份基于epoll的简单的多人聊天室代码,感觉对epoll的学习十分有用,代码会附在后面,简单看一下epoll相关的API。

epoll相关的API主要有三个:epoll_create、epoll_ctl和epoll_wait

int epoll_create(int size);
参数size:用来告诉内核要监听的数目一共有多少个。
返回值:成功时,返回一个非负整数的文件描述符,作为创建好的epoll句柄。调用失败时,返回-1,错误信息可以通过errno获得。

int epoll_ctl(int epfd, int op, int fd, struct epoll_event *event);

参数epfd:epoll_create()函数返回的epoll句柄。
参数op:操作选项,op的可选值有三个:EPOLL_CTL_ADD(注册新的fd到epfd上)、EPOLL_CTL_MOD(修改已经注册的fd的监听事件)和EPOLL_CTL_DEL(从epfd中删除一个fd)。
参数fd:要进行操作的目标文件描述符。
参数event:struct epoll_event结构指针,将fd和要进行的操作关联起来。
返回值:成功时,返回0,作为创建好的epoll句柄。调用失败时,返回-1,错误信息可以通过errno获得。
说明:epoll的事件注册函数,它不同与select()是在监听事件时告诉内核要监听什么类型的事件,而是在这里先注册要监听的事件类型。

另外,event结构体的结构如下:

 

int epoll_wait(int epfd, struct epoll_event * events, int maxevents, int timeout);

参数epfd:epoll_create()函数返回的epoll句柄。
参数events:struct epoll_event结构指针,用来从内核得到事件的集合。
参数 maxevents:告诉内核这个events有多大
参数 timeout: 等待时的超时时间,以毫秒为单位。
返回值:成功时,返回需要处理的事件数目。调用失败时,返回0,表示等待超时。

手动阀

 

从聊天室代码看epoll的使用和对比

标签:nbsp   单位   调用   epoll   目标   通过   time   集合   size   

原文地址:https://www.cnblogs.com/xdmonkey/p/8886469.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!