# C/C++ 高并发 Reactor 服务器导读 这门课的核心价值在于剥离对现成网络库的依赖,从零构建多反应堆(Multi-Thread Reactor)架构。市面上多数教程直接基于 Epoll 写单线程 Demo,或调用 Libevent 封装,难以应对浏览器并发请求与线程安全的双重挑战。本课程解决的是“如何像 Muduo 那样管理线程、连接与事件”的…
# C/C++ 高并发 Reactor 服务器导读
这门课的核心价值在于剥离对现成网络库的依赖,从零构建多反应堆(Multi-Thread Reactor)架构。市面上多数教程直接基于 Epoll 写单线程 Demo,或调用 Libevent 封装,难以应对浏览器并发请求与线程安全的双重挑战。本课程解决的是“如何像 Muduo 那样管理线程、连接与事件”的工程问题:主线程负责 Accept,工作线程各自拥有独立的 EventLoop,通过消息队列或线程池分发连接,最终实现 B/S 架构下的 HTTP 解析与响应。这种设计不仅覆盖了 I/O 多路复用的底层逻辑,更涉及线程间数据共享、连接生命周期管理以及网络字节流粘包处理等实际开发中的痛点。
适合具备 C 语言指针基础、熟悉 Unix/Linux 系统调用(如 socket、epoll)且希望深入理解网络框架内部机制的开发者。如果你是纯 Python/Java 后端工程师,缺乏 C++ 内存管理经验,建议先补全 RAII 与 STL 容器知识;若已能独立写出基于 Epoll 的单线程 HTTP 服务器,则可跳过基础部分,直接切入多线程 Reactor 的线程同步与连接分配策略。
建议先看“单线程 Reactor 基础”与“HTTP 协议解析”两节。前者是理解事件循环(Event Loop)如何处理可读、可写及定时器事件的基石;后者确保你明白应用层如何将原始字节流转为结构化的请求对象。在掌握单线程模型后,再深入“多线程 Reactor 模型”章节,重点观察主线程如何高效将新连接分配给空闲的工作线程,以及线程间如何通过线程安全队列传递事件。学完并对照源码实践后,你能独立实现一个支持 Keep-Alive、可处理数千并发连接的轻量级 Web 服务器,具备阅读或魔改 Muduo 类大型网络库底层的代码能力。
资料配合练习的最佳方式是“静态阅读+动态调试”。先通读源码中 EventLoop、Channel、Acceptor 及 1000s 中核心类的头文件注释,理解各组件职责边界。随后在本地环境编译项目,使用 gdb 断点跟踪一个 HTTP 请求从网卡中断到最终发送响应报文的完整生命周期。重点调试多线程切换时的锁竞争场景,体会互斥锁粒度对吞吐量的影响。不要试图一次性读懂所有代码,而是按照“Accept 线程 -> IO 线程池 -> 业务线程池”的数据流向,分段攻克每个模块。每完成一个模块,尝试添加简单的日志或监控指标,验证自身对内存状态变更的追踪是否准确,这才是将视频理论转化为工程肌肉记忆的关键路径。
本课程深入讲解了构建多反应堆高并发网络服务器的全过程,总时长超24小时(1080P高清)。从零开始,以C语言和C++分别实现类似Muduo网络库的服务器。应用层采用Http协议,打造出B/S架构模型,能处理浏览器请求。课程详细剖析每个环节,无论是初学者还是有一定基础者,都能掌握多反应堆高并发网络服务器的构建精髓,在实践与理论结合中,提升网络编程能力。
QQ_1759657864609.png (61.75 KB, 下载次数: 0) 2025-10-5 17:55 上传 课程介绍: 本课程深入讲解了构建多反应堆高并发网络服务器的全过程,总时长超24小时(1080P高清)。从零开始,以C语言和C++分别实现类似Muduo网络库的服务器。应用层采用Http协议,打造出B/S架构模型,能处理浏览器请求。课程详细剖析每个环节,无论是初学者还是有一定基础者,都能掌握多反应堆高并发网络服务器的构建精髓,在实践与理论结合中,提升网络编程能力。 课程目录: 001. 项目概述以及要求 .mp4 43.61M 002. 项目效果展示 .mp4 29.23M 003. 关于项目业务层的说明 .mp4 27.86M 004. 多反应堆模型结构概述 .mp4 69.64M 005. 在VS中创建基于Linux的项目 .mp4 24.37M 006. 初始化服务器端用于监听的套接字 .mp4 41.20M 007. epoll 工作模型的雏形 .mp4 43.50M 008. 和客户端建立新连接 .mp4 23.01M 009. http的get请求数据块的格式 .mp4 48.38M 010. http的post请求数据块的格式 .mp4 30.35M 011. http响应消息的数据格式 .mp4 14.45M 012. http的状态码和如何指定content-type .mp4 23.35M 013. 接收客户端的http请求消息 .mp4 34.22M 014. sscanf 函数的使用 .mp4 41.85M 015. 解析请求行 .mp4 41.32M 016. 发送文件的两种方式 .mp4 38.21M 017. 组织http响应的数据块头 .mp4 18.80M 018 通过http响应消息发送文件 .mp4 29.37M 019. Linux 中遍历目录的两种方式 .mp4 40.00M 020. 发送目录-上 .mp4 39.99M 021. 发送目录-下 .mp4 38.25M 022. 代码的补充和编译 .mp4 30.20M 023. 程序测试和部分bug的修改 .mp4 59.81M 024-非阻塞模式下关于sendfile函数的说明 .mp4 22.38M 025. 解决浏览器无法访问带特殊字符的文件的问题 .mp4 63.89M 026. 添加多线程处理 .mp4 55.72M 027. 第2阶段模块功能概述 .mp4 25.09M 028. Channel 模块的实现 .mp4 45.15M 029. ChannelMap 模块的实现 - 上 .mp4 26.03M 030. ChannelMap 模块的实现 - 下 .mp4 34.28M 031. Dispatcher 模块的实现思路 .mp4 49.69M 032. Dispatcher 的定义 .mp4 56.68M 033. EpollDispatcher 的实现 - 上 .mp4 36.53M 034. EpollDispatcher 的实现 - 中 .mp4 42.00M 035. EpollDispatcher 的实现 - 下 .mp4 22.11M 036. PollDispatcher 的实现 - 上 .mp4 45.79M 037. PollDispatcher 的实现 - 下 .mp4 34.46M 038. SelectDispatcher 的实现 .mp4 80.19M 039. EventLoop 模块的剖析 .mp4 37.24M 040. EventLoop 的初始化 .mp4 57.42M 041. 启动 EventLoop .mp4 17.73M 042. 在 EVentLoop 中处理被激活的文件描述符的事件 .mp4 39.15M 043. 往 EventLoop 的任务队列中添加新任务 .mp4 64.63M 044. 主线程给子线程添加任务以及如何处理该任务 .mp4 72.94M 045. 处理任务队列中的任务 .mp4 33.85M 046. 将任务队列中的任务添加到 Dispatcher 的检测集合中 .mp4 29.47M 047. 任务队列中节点在 Dispatcher 中的删除和修改 .mp4 34.96M 048. 子线程 WorkerThread 的实现 .mp4 65.89M 049. 线程池 ThreadPool 的初始化 .mp4 32.91M 050. 线程池的启动和从线程池中取出一个反应堆实例 .mp4 47.47M 051. Buffer 的创建和销毁 .mp4 29.32M 052. Buffer 的扩容 .mp4 64.48M 053. Buffer 的数据写入-直接写 .mp4 25.49M 054. 通过 Buffer 接收套接字数据 .mp4 40.67M 055. 创建并初始化 TcpServer 实例 .mp4 40.30M 056. 启动 TcpServer .mp4 34.29M 057. 主线程反应堆模型的事件添加和处理详解 .mp4 50.08M 058. 创建一个 TcpConnection 实例 .mp4 47.43M 059. 在 TcpConnection 接收客户端数据 .mp4 16.74M 060. HttpRequest 的定义和初始化 .mp4 41.43M 061. HttpRequest 资源重置和销毁 .mp4 29.57M 062. 添加和查找 HttpRequest 请求头 .mp4 40.66M 063. 解析请求行(通过指针方式解析非 sscanf 方式) .mp4 81.61M 064. 优化解析请求行的代码 .mp4 60.24M 065. 解析请求头并存储 .mp4 57.47M 066. 解析完整的 http 请求协议 .mp4 38.66M 067. 处理 http 请求 - 上 .mp4 44.32M 068. HttpResponse 的定义和初始化 .mp4 56.90M 069. HttpREsponse 添加响应头和内存释放 .mp4 23.45M 070. 组织 HttpResponse 响应消息 .mp4 51.31M 071. 处理 Http 请求 - 下 .mp4 60.60M 072. 修改发送目录和文件的函数 .mp4 35.35M 073. 在 TcpConnection 中接收并解析 Http 请求消息 .mp4 39.67M 074. 给客户端回复数据的两种方式-上 .mp4 66.42M 075. 给客户端回复数据的两种方式 - 下 .mp4 65.99M 076. 内存资源的释放 .mp4 64.46M 077. 程序的编译和错误的修改 - 上 .mp4 99.69M 078. 程序的编译和bug的修改 - 下 .mp4 46.39M 079. 启动服务器和添加日志功能 .mp4 29.91M 080. 程序的调试和bug修改 - 上 .mp4 64.50M 081. 程序的调试和bug修改 - 下 .mp4 80.09M 082. 使用CPP重构项目-前言 .mp4 46.37M 083. 重构 Channel 类 .mp4 62.00M 084. 重构 Dispatcher 类 .mp4 48.98M 085. 重构 EpollDispatcher 类 .mp4 74.24M 086. 重构 PollDispatcher 类 .mp4 53.73M 087. 重构 SelectDispatcher 类 .mp4 45.21M 088. 重构 EventLoop 类 - 1 .mp4 66.19M 089. 重构 EventLoop 类 - 2 .mp4 52.42M 090. 重构 EventLoop l类 - 3 .mp4 57.14M 091. 重构 EventLoop 类 - 4 .mp4 68.57M 092. 重构 EventLoop 类 - 5 .mp4 85.68M 093. 重构 ThreadWorker 类 .mp4 61.27M 094. 重构 ThreadPool 类 .mp4 61.62M 095. 重构 TcpServer 类 .mp4 63.46M 096. 重构 Buffer 类 - 上 .mp4 30.17M 097. 重构 Buffer 类 - 下 .mp4 64.32M 098. 重构 HttpRequest 类 - 1 .mp4 56.44M 099. 重构 HttpRequest 类 - 2 .mp4 91.62M 100. 重构 HttpRequest 类 - 3 .mp4 50.56M 101. 重构 HttpRequest 类 - 4 .mp4 76.28M 102. 重构 HttpResponse 类 .mp4 84.67M 103. 重构 HttpResponse 类 - 续 .mp4 32.25M 104. 重构 TcpConnection 类 - 上 .mp4 88.69M 105. 重构 TcpConnection 类 - 下 .mp4 46.88M 106. 多反应堆服务器事件处理流程梳理 .mp4 67.96M 107. 程序的编译和语法上的bug修改 .mp4 30.30M 108. 测试和bug修改 .mp4 37.38M | └──109. 内容更正 .mp4 33.56M └──资料 Http Web 服务器.pdf 768.85kb Http_高并发服务器 概述.pdf 405.08kb 代码.exe 2.89M 图解HTTP-彩色版.pdf 13.11M | └──项目模块-xmind.pdf 151.20kb