基于 muduo 实现的多线程TCP网络库
本项目是对 muduo 网络库的一个重新实现版本,具有以下特点:
- 延用 muduo 中的多Reactor多线程模型(即one loop per thread)作为并发模型。
- 尽可能的使用C++标准库替换 muduo 中自己封装的一些组件。例如,使用C++中提供的并发提供工具 thread、mutex等替换 POSIX 提供的并发接口,使用C++17中的 string_view 替换 StringPiece 等。
- 实现了同步/异步日志功能。目前只支持将日志输出到控制台和文件,异步日志采用的仍然是muduo中的双缓冲buffer的思想,但对其实现进行了重构,借鉴了python中logger的设计思路。
目前本项目算是第一个版本,只实现了一个TCP服务程序的基本功能,仍有许多功能待实现和完善,待继续实现和完善的部分将在更新计划中持续更新。
请使用支持 C++17 及以上的编译器。我的开发环境为:
Ubuntu 20.04
g++ 11.3
cmake 3.16.3
make 4.2.1
./build.sh
目前还为基于本网络库写上层的应用,已加入 更新计划。 可以查看 tests 目录下相应的测试代码。
- one-loop-per-thread核心原理
- 源码分析之Channel、EventLoop和Selector
- 源码分析之Thread、EventLoopThread和EventLoopThreadPool
- 定时器
- 性能测试
- 更新中...
- 增加性能测试
- 完善测试代码
- 增加 examples 中的示例
- 增加和其网络库的对比,例如 asio、nginx
- 引入协程
保持更新...