使用C++11写的Http服务器,采用Reactor模式,可解析GET、HEAD请求,支持长连接(keep-alive)操作。
- Linux (kernel 4.4+)
- g++ 7.5.0
- cmake 3.10+
mkdir build && cd build
cmake ..
make all
./webserver -p port -t threadnum
- 采用Reactor模式,主线程只负责接收请求建立连接,使用线程池处理请求和执行I/O操作
- 采用I/O多路复用EPOLL边缘触发、非阻塞I/O
- 使用线程池处理请求,提高并发量并避免频繁创建和销毁线程开销
- 采用STL中基于小根堆的优先级队列存储计时器,计时器用于关闭超时请求,计时器处理完事件后统一删除,实现惰性删除
- 使用智能指针管理内存避免内存泄漏
- 双缓存日志