Linux下epoll的使用
来源:互联网 发布:plc编程月薪 编辑:程序博客网 时间:2024/05/24 06:30
Linux下epoll的使用
epoll的工作方式
epoll有两种工作方式:
* LT:level triggered,即满足某种状态则触发,类似于数字电路中的高/低电平触发
* ET:edge triggered ,即状态发生变化时触发,类似于数字电路的上升/下降沿触发
epoll默认的工作模式是LT。使用LT时,如果事件发生后应用程序未处理,epoll会继续报告,直到事件被处理;而
使用ET模式时,epoll只会通知一次而不会重复触发,因此应用程序必须处理完。由于ET模式不会重复触发,所以效率较高。需要注意的是,使用ET模式读取数据时,一定要读到无数据为止,否则epoll不会再次触发。
LT支持阻塞IO和非阻塞IO,ET只支持非阻塞IO。
epoll系统调用
epoll实际上是一系列系统调用,Linux提供了C函数的封装:
int epoll_create(int size);
创建epoll:
size:监听的对象数量
返回值:epoll的文件描述符
int epoll_ctl(int epfd, int op, int fd, struct epoll_event *event);
epoll控制:
epfd:epoll文件描述符
op:操作类型:
* EPOLL_CTL_ADD:注册新的fd到epfd中
* EPOLL_CTL_MOD:修改已经注册的fd的监听事件
* EPOLL_CTL_DEL:从epfd中删除一个fd
fd:被操作对象的文件描述符
event:需要监听的事件
int epoll_wait(int epfd, struct epoll_event * events, int maxevents, int timeout);
阻塞当前线程,直到有事件发生
epfd:epoll文件描述符
events:需要处理的事件数组头指针
maxevents:events数组长度,即最多有多少个事件要处理
timeout:超时时间,以毫秒计。0立即返回,-1永不超时
返回值:就绪的事件数量,返回0表示已超时
- Linux下epoll的使用
- linux下的epoll
- Linux下的epoll
- Linux epoll的使用
- linux epoll的使用
- 关于在linux下epoll的使用问题
- Linux 下使用epoll实现转发服务器的小DEMO
- linux下select,poll,epoll的使用与重点分析
- Linux下服务器端使用EPOLL ACCEPT产生的问题
- linux下socket编程和epoll的使用
- linux下使用epoll接收Udp数据
- linux下epoll的一些开发经验
- linux下epoll的深入研究
- Linux下epoll事件的触发条件
- linux下的epoll编程应用
- Linux下epoll的学习总结
- linux下epoll编程
- linux下epoll服务器
- Android view 的参数x y left right top bottom translationX translationY
- .NET安装失败的解决方法之一
- docker dockerfile构建tomcat应用
- Python 异步随笔
- HFun.快速开发平台(一)=》简述
- Linux下epoll的使用
- 关于头文件中的 static inline函数
- echarts入门新手必看
- js拼接字符串和转义字符的使用
- SpringBoot --集成HBASE/基于SpringDataHadoop
- mongodb数据库安全设置
- iOS无埋点数据SDK实践之路
- 安居客Android项目架构演进
- python3 -- 列表操作 -深拷贝、浅拷贝、遍历