线程池多反应堆服务器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处理

相关推荐
shandianchengzi28 分钟前
【小白向】错位排列|图文解释公考常见题目错位排列的递推式Dn=(n-1)(Dn-2+Dn-1)推导方式
笔记·算法·公考·递推·排列·考公
浅念-38 分钟前
C语言编译与链接全流程:从源码到可执行程序的幕后之旅
c语言·开发语言·数据结构·经验分享·笔记·学习·算法
The森1 小时前
Linux IO 模型纵深解析 01:从 Unix 传统到 Linux 内核的 IO 第一性原理
linux·服务器·c语言·经验分享·笔记·unix
tq10861 小时前
Skills 的问题与解决方案
笔记
三水不滴1 小时前
有 HTTP 了为什么还要有 RPC?
经验分享·笔记·网络协议·计算机网络·http·rpc
三块可乐两块冰2 小时前
【第二十九周】机器学习笔记三十
笔记
听麟2 小时前
HarmonyOS 6.0+ 跨端智慧政务服务平台开发实战:多端协同办理与电子证照管理落地
笔记·华为·wpf·音视频·harmonyos·政务
risc1234563 小时前
认识一个事物,需要哪些基本能力与要素?
笔记
firewood20244 小时前
共射三极管放大电路相关情况分析
笔记·学习
Hello_Embed4 小时前
libmodbus STM32 主机实验(USB 串口版)
笔记·stm32·学习·嵌入式·freertos·modbus