C++项目:仿muduo库高并发服务器-------poller模块
文章目录
- 前言
- 一、Poller模块
- 二、模块设计
- 2.1 封装思想
- 2.2 逻辑流程
- 三、代码实现
前言
这也是一个比较简单的基础功能模块,主要提供对epoll系统调封装的接口。
一、Poller模块
- 功能:对任意描述符进行IO事件监控
- 意义:封装epoll,简化描述符事件监控操作
- 功能接口:
- 添加事件监控(针对Channel模块 )
- 修改事件监控
- 移除事件监控
通过对epoll的封装达到对多个描述符同时检测的目的
Channel模块启用监控、移除监控等功能,都是通过调用该模块的封装完成的。
二、模块设计
2.1 封装思想
- 需具备
epoll
的操作句柄。 - 拥有
struct epoll_event
结构数组,用于监控时保存所有活跃事件。 - 利用哈希表管理描述符及其对应的事件管理
Channel
对象。
2.2 逻辑流程
- 对描述符进行监控,通过
Channel
明确描述符需要监控的事件。 - 当描述符就绪时(描述符有事件就绪时),借助哈希表根据描述符找到对应的
Channel
(通过Channel
确定事件的处理方式),并返回就绪描述符对应的Channel
。
只有Channel对象知道对自己的描述符监控了什么事件、什么事件被出发了以及事件触发后怎么处理