Linux15-epoll、数据库
Reactor模型:
1.poll
1.po使用链表管理文件描述符,对监测的文件描述符没有上限限制.
2.文件描述符集尽在应用层创建,需要实现应用层和内核层的反复拷贝
3.需要应用层对集合表进行遍历,寻找到达的事件
4.只能工作在水平触发模式(低速模式),不能工作在边沿触发模式(高速模式)
2.epoll
1.使用树型结构(红黑树)管理文件描述符,提高查找效率
树型结构的特点:提高数据的查找效率,
遍历时间复杂度为O(2logN)
2.文件描述符集合创建在内核,避免了应用层和内核层的数据拷贝
3.直接向应用层返回到达的io事件的集合,不需要进行遍历查找
2.1操作流程:
1.创建文件描述符集合了 epoll_create();
2.将关注的文件描述符加入到集合epoll_ctl();
3.等待IO事件到达epoll_wait();
4.根据不同的IO事件处理不同的任务
int epoll_create(int size) |
功能:创建并打开一个epoll的文件描述符集合 |
参数: size:最多允许监测的文件描述的个数 |
返回值: 成功:代表集合的文件描述符 失败:-1 |