加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
README 2.45 KB
一键复制 编辑 原始数据 按行查看 历史
希望之光 提交于 2022-07-11 15:58 . Update README
Muduo is a multithreaded C++ network library based on
the reactor pattern.
It runs on Linux with kernel version >= 2.6.28.
http://code.google.com/p/muduo/
Use of this source code is governed by a BSD-style
license that can be found in the License file.
__ __ _
| \/ | | |
| \ / |_ _ __| |_ _ ___
| |\/| | | | |/ _` | | | |/ _ \
| | | | |_| | (_| | |_| | (_) |
|_| |_|\__,_|\__,_|\__,_|\___/
项目的原始链接:https://github.com/chenshuo/muduo
本项目,是对muduo网络库代码的详细分析,
代码中,加入了十分详细的中文注释,同时,也总结了PDF格式的代码分析文档
作为,自己对c++ 网络编程学习的总结!
================================================================================================
项目实现分析简介
================================================================================================
该项目,使用pthread线程库,Linux socket 网络编程API,实现高性能非阻塞 c++网络框架库
整个网络框架,共有如下几个功能模块:
客户端:用于编写客户端程序。采用单线程 和 Reactor模式进行实现。
服务端:用于编写服务端程序。服务端的线程模型,采用非阻塞IO + one Loop per thread模型,主线程和线程池中的每个工作线程,均有一个event Loop(也就是Reactor),
Reactor模式在进行实现时,使用epoll IO多路复用模型。此种实现方式,可以实现服务端程序对百万并发连接请求的处理。
定时器:用于编写定时任务。将定时器放入定时器容器中进行管理,为实现在定时器容器中,高效的查找和删除超时定时器,定时器容器采用std::set进行实现,
同时为将socket读写事件和定时器超时事件,进行统一管理,使用timerfd_create创建系统定时器,并将创建的系统定时器文件描述符和socket文件描述符,
均加入到epoll内核事件监听表中,进行统一监听。
socket API封装:对socket 网络编程API进行封装,供其他模块实现时调用。
Buffer封装:对std::vector容器进行了进一步的封装。由于,socket在进行读写操作时,均会出现无法在一次读写操作中接收和发送全部数据的情况,
所以,就需要在客户端和服务端的每一个socket 连接上,均建立input buffer和output buffer。
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化