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

相关推荐
一只侯子3 小时前
Face AE Tuning
图像处理·笔记·学习·算法·计算机视觉
whale fall5 小时前
【剑雅14】笔记
笔记
星空的资源小屋6 小时前
跨平台下载神器ArrowDL,一网打尽所有资源
javascript·笔记·django
Xudde.7 小时前
Quick2靶机渗透
笔记·学习·安全·web安全·php
AA陈超8 小时前
Git常用命令大全及使用指南
笔记·git·学习
愚戏师8 小时前
Python3 Socket 网络编程复习笔记
网络·笔记
降临-max9 小时前
JavaSE---网络编程
java·开发语言·网络·笔记·学习
大白的编程日记.10 小时前
【计算网络学习笔记】MySql的多版本控制MVCC和Read View
网络·笔记·学习·mysql
IMPYLH11 小时前
Lua 的 require 函数
java·开发语言·笔记·后端·junit·lua
YJlio14 小时前
进程和诊断工具学习笔记(8.29):ListDLLs——一眼看清进程里加载了哪些 DLL,谁在偷偷注入
android·笔记·学习