代码拉取完成,页面将自动刷新
这是一个轻量级的Web服务器,目前支持GET、HEAD方法处理静态资源。并发模型选择: 单进程+Reactor+非阻塞方式运行。
测试页面: http://marvinle.cn:8080/
Part Ⅰ | Part Ⅱ |
---|---|
整体设计 | 性能测试分析 |
操作系统: Ubuntu 16.04
编译器: g++ 5.4
版本控制: git
自动化构建: cmake
集成开发工具: CLion
编辑器: Vim
压测工具:WebBench
cmake . && make
./webserver [-p port] [-t thread_numbers] [-r website_root_path] [-d daemon_run]
状态机解析HTTP请求,目前支持 HTTP GET、HEAD方法
添加定时器支持HTTP长连接,定时回调handler处理超时连接
使用 priority queue 实现的最小堆结构管理定时器,使用标记删除,以支持惰性删除,提高性能
使用epoll + 非阻塞IO + 边缘触发(ET) 实现高并发处理请求,使用Reactor编程模型
epoll使用EPOLLONESHOT保证一个socket连接在任意时刻都只被一个线程处理
使用线程池提高并发度,并降低频繁创建线程的开销
同步互斥的介绍
使用RAII手法封装互斥器(pthrea_mutex_t)、 条件变量(pthread_cond_t)等线程同步互斥机制,使用RAII管理文件描述符等资源
使用shared_ptr、weak_ptr管理指针,防止内存泄漏
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。