线程池多反应堆服务器webserver(c++)

线程池多反应堆服务器webserver


前言

参考:爱编程的大丙

一、项目框架

Dispatcher类

Dispatcher类:基类,接口类,同子类(select、poll、epoll)实现多态。

反应堆模型

反应堆模型:提供处理fd的方法。按理说,每个channel的回调函数可以不同,但是此项目只有两类fd:①lfd,监听fd,是tcp/httpServer的主线程使用,用于监听新的连接事件cfd,将cfd交给线程池的子线程处理;②cfd,socket通信fd,主要是线程池中的子线程处理http通信的分析和回应。

对于lfd(只有一个lfd),其只有readcallback,就是将新cfd交给线程池。

对于cfd,其有read、write、destroycallback,3个回调函数,虽然有多个cfd,每个cfd要处理的内容是一致的,即:

readcallback读取客户端http请求,并进行分析和组织回应,断开连接;

writecallback读取writebuffer中的http回应数据进行发送;

destroycallback删除对应的Tcpconnection对象。

所以每个cfd的3个回调函数其实都是一样的,所以在Tcpconnection中,只需要定义3个回调函数就行。

多线程/线程池

多线程/线程池:多线程使用eventloop

tcp服务器

tcp服务器:基础框架。http服务器就是在tcpServer的基础上使用了http通信协议。

buffer

buffer:数据存储

HttpRequest

HttpRequest:分析http请求,组织回应response

HttpResponse

HttpResponse:根据httprequest分析得到的HttpResponse进行http回应数据的组织

TcpConnection

TcpConnection:IO处理

相关推荐
OBiO201342 分钟前
Cell | 突破AAV载体容量限制!路中华/姜玉武/刘太安团队开发AAVLINK系统实现大基因递送
笔记
智者知已应修善业2 小时前
【51单片机2个按键控制流水灯运行与暂停】2023-9-6
c++·经验分享·笔记·算法·51单片机
sakiko_2 小时前
UIKit学习笔记5-使用UITableView制作聊天页面
笔记·学习·swift·uikit
Alice-YUE3 小时前
【js高频八股】防抖与节流
开发语言·前端·javascript·笔记·学习·ecmascript
小陈phd4 小时前
TensorRT 入门完全指南(一)——从核心定义到生态工具全解析
人工智能·笔记
是上好佳佳佳呀4 小时前
【前端(十一)】JavaScript 语法基础笔记(多语言对比)
前端·javascript·笔记
handler014 小时前
Linux 内核剖析:进程优先级、上下文切换与 O(1) 调度算法
linux·运维·c语言·开发语言·c++·笔记·算法
其实防守也摸鱼5 小时前
CTF密码学综合教学指南--第四章
网络·笔记·安全·网络安全·密码学·ctf
05候补工程师7 小时前
【ROS 2 具身智能】Gazebo 仿真避坑指南:从“幽灵机器人”到传感器数据流打通
人工智能·经验分享·笔记·ubuntu·机器人
chushiyunen7 小时前
pandas使用笔记、数据清洗、json_normalize
笔记·pandas