epoll学习笔记
来源:互联网 发布:极光卡五星源码出售 编辑:程序博客网 时间:2024/05/17 07:23
两种触发模式:
1.Edge Triggered(ET)边缘触发(“高速”模式):仅当状态发生变化时才会通知。只会提示一次,直到下次再有数据流入之前都不会再提示。
2.Level Triggered(LT)水平触发(默认):只要还有没有处理的事件就会一直通知(类似于select/poll操作)。只要fd还有数据可读,每次epoll_wait都会返回它的事件,提醒用户程序去操作。
阻塞与非阻塞是套接字层面的。
同步与异步是操作系统本身的概念。
Apache使用select/poll复用模式->轮询空闲的fd,代价:O(n)
epoll实现了对文件描述的“开关”设定,也就是回调机制,当一个fd准备就绪之后,它会主动去触发回调,通知用户程序自己已经就绪,不需要轮询,代价:O(1)
epoll的三个基本调用:
1.int epoll_create()创建一个epoll句柄,其实也是一个fd。
2.int epoll_ct(int epfd, int op, int fd, struct epoll_event * event)对一个epoll句柄epfd操作。
op(操作方式): a.EPOLL_CTL_ADD添加一个句柄(fd)到epoll中。
b.EPOLL_CTL_MOD修改句柄fd的监听方式。
c.EPOLL_CTL_DEL从epoll中移除句柄fd。
fd:是操作数(也是一个文件句柄)
events:是事件属性,包括两部分: a.event.data.fd:当前需要监听的句柄。
b.event.events:需要监听的事件类型集合(主要有下面8种事件类型)。
事件类型: 1.EPOLLIN:读事件;
2.EPOLLOUT:写事件;
3.EPOLLRDHUP:客户端半关闭;
4.EPOLLPRI:高优先级 读;
5.EPOLLERR:连接错误(不需要特别指定);
6.EPOLLHUP:客户端主动关闭(不需要特别指定);
7.EPOLLONESHOT:一次性使用;
8.EPOLLET:边缘触发。
3.int epoll_wait(int epfd, struct epoll_event * events, int maxevents, int timeout)等待(检查)epoll事件发生。
epoll:需要检查的epoll句柄;
events:结果暂存数组;
maxevents:可以返回的事件最大数;
timeout:等待时间(经常设为-1)。
epoll:多线程多进程。
- epoll详解-epoll学习笔记
- epoll学习笔记
- epoll学习笔记
- epoll学习笔记
- epoll学习笔记
- epoll 学习笔记
- epoll学习笔记
- epoll学习笔记
- epoll学习笔记(转)
- epoll学习笔记
- epoll学习笔记
- Epoll学习笔记
- epoll学习笔记
- epoll学习笔记
- epoll 学习笔记
- epoll学习笔记
- epoll学习笔记
- epoll学习笔记
- Ubuntu One免费储存空间增至5GB
- Mac下jdk的安装路径
- iOS开发之结合asp.net webservice实现文件上传下载
- 双链表相关操作
- strcpy; strcmp; strlen; strcat 函数实现
- epoll学习笔记
- ubuntu下压缩和解压缩的命令用法
- 2011.07.30
- java开发工程师和网站优化师?我该选择哪条路呢
- POJ 2503 Babelfish hash / qsort+ bsearch
- 帧差发去除背景类肤色影响的肤色检测法
- 纠结的二分。。。
- POJ 1328 Radar Installation 贪心算法
- 如何确定web里面的数据分页