linux下C++ socket网络编程( 六 )
3)epoll有两种工作方式 , LT(Level triggered) 水平触发 、ET(Edge triggered)边沿触发 。 LT是select/poll的工作方式 , 比较低效 , 而ET是epoll具有的高速工作方式 。
Epoll 用法(三步曲):
第一步:int epoll_create(int size)系统调用 , 创建一个epoll句柄 , 参数size用来告诉内核监听的数目 , size为epoll支持的最大句柄数 。
第二步:int epoll_ctl(int epfd int op int fd struct epoll_event *event) 事件注册函数
参数 epfd为epoll的句柄 。 参数op 表示动作 三个宏来表示:EPOLL_CTL_ADD注册新fd到epfd 、EPOLL_CTL_MOD 修改已经注册的fd的监听事件、EPOLL_CTL_DEL从epfd句柄中删除fd 。 参数fd为需要监听的标识符 。 参数结构体epoll_event告诉内核需要监听的事件 。
第三步:int epoll_wait(int epfd struct epoll_event * events int maxevents int timeout) 等待事件的产生 , 通过调用收集在epoll监控中已经发生的事件 。 参数struct epoll_event 是事件队列 把就绪的事件放进去 。
推荐阅读
- Linux|为什么要开发那么多基于Linux的国产系统,直接使用Linux不可以吗?
- 从头学习Linux基础
- 3步教你做个Linux系统,易用性不比Windows差!你学会了吗?
- Linux该如何学习
- Linux在云端是怎么帮助大家工作简单方便的那?
- Linux当前应用的角色-个人环境的使用
- Linux当前应用的角色-企业环境的应用
- 托瓦斯的Linux的发展
- Linux是什么与如何学习
- 国产linux系统有希望了! 韩国也将摆脱微软依赖: 大规模使用linux