版本历史.md
从0.1最初形成到一点一点改进到0.6,到最终看了muduo,痛下决心重写,最终的版本完全从头再来了,但有了前面的经验,写起来顺畅了不少,但花了比之前所有加起来还要长的时间
第一版是看了很多Github上别人写的服务器,以及博客上的一些总结,结合自己的理解写出来的。模型结构如下:
使用了epoll边沿触发+EPOLLONESHOT+非阻塞IO
使用了一个固定线程数的线程池
实现了一个任务队列,由条件变量触发通知新任务的到来
实现了一个小根堆的定时器及时剔除超时请求,使用了STL的优先队列来管理定时器
解析了HTTP的get、post请求,支持长短连接
mime设计为单例模式
线程的工作分配为:
锁的使用有两处:
第一版的服务器已经相对较完整了,该有的功能都已经具备了
在第一版的基础上,优化了代码结构,自己设计了RAII锁机制,使锁能够自动释放,并修复了一些小的bug
这一版还是花了不少时间的,毕竟对象的生命周期不由自己控制了
这个时候买了陈硕的《Linux多线程服务端编程》书,看了一部分,从前面几章获得启发
不知道该给自己的服务器取什么名字好,随便叫个吧……最后一版被我改的面目全非,也是下了很大的决心。之前的版本无非修修补补,算是自我检讨的过程,但是闭门造车并不可取,于是我把陈硕的《Linux多线程服务端编程》看完了,书上虽然贴了部分源码,但我看的还是朦朦胧胧,很多地方不明白,花了几天时间把源码看了,不懂的地方再回过来看书,总算是弄明白了。看了大牛的代码,再看自己的……哎我重写总行了吧
顺便吐槽一下自己,之前在知乎上看到陈硕一直推销自己的书,我还觉得这人好功利,后来被师兄推荐,看了一下目录,觉得可以参考一下就买了。没想到书就一点一点这么看完了……还看了好几遍,源码也是看了好几遍……
当然,这不是最终篇,可改进的地方还有很多,绝对不敢说看了几本书就敢说自己写的东西比大牛写的好,我还会继续改进自己的server的
最后版本的东西没有在这里介绍,写在了模型结构里,这里只想写一下自己的心路历程,记录一下小白成长之路~