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

相关推荐
sakiko_9 小时前
Swift学习笔记42-SwiftUI的属性包装器(讲解+面试)
笔记·学习·ios·swiftui·swift
自小吃多9 小时前
器件移动、旋转、镜像、对齐、等间距操作笔记
笔记·嵌入式硬件
存在morning10 小时前
【Paimon 学习笔记 三】工作流程:Paimon 的批写、流写、批读与流读
笔记·学习
老当益壮梁奶奶12 小时前
Linux软件编程学习笔记(八):进程间通信详解(1)
linux·c语言·笔记·学习·算法
weixin_4660681113 小时前
《十分钟冥想》精读笔记(上):每天10分钟,给大脑做一次“系统减负”
笔记
凯尔萨厮14 小时前
Java学习笔记十(注解)
java·笔记·学习
一条破秋裤15 小时前
STM32 学习笔记:GPIO 输出实验——LED 闪烁、流水灯与蜂鸣器
笔记·stm32·学习
存在morning16 小时前
【Paimon 学习笔记 二】存储架构:快照、manifest、LSM 树、bucket
笔记·学习·架构
双眼鈹16 小时前
周报8.31
笔记·学习
打团从来人不齐17 小时前
Linux服务器搭建笔记-008:台式机共享WIFI
linux·服务器·笔记