78、框架分析------服务器源码解析----云视频服务项目
·
框架分析
整体流程图

简单解析
绿色为主线程,蓝色为子线程
- 主线程启动 epoll 监听新的连接,当有新的连接时通过 eventfd 通知子线程
- 主线程启动时会利用
EventLoop启动多个子线程,每个子线程由IOThread处理 - 子线程启动 epoll 监听 eventfd 以及一些已经建立的连接的读写事件
- 子线程判断如果为 eventfd,进一步判断分为三种情况,0 为注册新的连接,1 为外部线程投递的发送事件,2 为关闭事件
- 如果为新连接则将新连接放入 epoll 中。
- 如果为外部投递的发送事件,则判断是否能直接发送,如不能则放入发送队列并监听 EPOLLOUT 事件
- 如果为外部投递的关闭事件,则关闭 epoll 监听,子线程退出
- 如果不是 event 事件,则判断 epoll 是否返回错误,如果返回错误则清除该描述符,并监听下一个
- 如果不是 event 事件,且没有错误,那就是读写事件,分别处理读写请求即可。
- 读请求将收到的消息 echo 给对方(可选,测试用)
- 写请求又回到 6 的处理逻辑。
类关系图

项目源码
openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构
更多推荐


所有评论(0)