File tree Expand file tree Collapse file tree 1 file changed +2
-0
lines changed Expand file tree Collapse file tree 1 file changed +2
-0
lines changed Original file line number Diff line number Diff line change 21
21
* ** 实现[ LockFreeQueue] ( https://github.com/importcpp/WebServer/blob/master/webserver/lock/KLockFreeQueue.h ) 用于任务的异步添加与移除** ,代替了常规的互斥锁管理临界区的方式 [ 这里的Lock free queue并没有解决ABA问题,但是针对这里单生产者单消费者模型,不会发生ABA问题]
22
22
* 实现[ 环形缓冲区] ( https://github.com/importcpp/WebServer/blob/master/webserver/tcp/KRingBuffer.h ) 作为Tcp读取数据和写入数据的缓冲类,使得数据被读取之后不需要移动其余元素的位置来在尾部腾出空间,针对环形缓冲区读或者写空间可能会出现不连续的情况,在Read和Write的处理上,使用了readv和writev系统调用读取不连续的内存(只需要一次系统调用),解决了系统调用和拷贝带来的开销
23
23
* 采用智能指针管理对象的资源
24
+ * dev分支加入了Tcp Connection的** 回收机制** ,用于回收Tcp Connection对象中的资源,避免多次创建的开销
24
25
* ......
25
26
26
27
## Develop and Fix List
31
32
* 2020-03-26 Dev: 定义宏使得WebServer编译时确定Epoll的工作模式(ET/LT)!通过宏定义切换,方便压测对比实验
32
33
* 2020-04-04 ** Important Dev:** 针对单生产者单消费者模型的特点,临界区的保护机制增加了Lockfree queue,用于与互斥锁做性能对比!目前的Lockfree queue,暂未解决CAS问题,后期会利用Hazard pointer解决。
33
34
* 2020-04-10 ** Important Dev:** 针对muduo原本的Buffer类实现内部挪滕,增加数据拷贝开销的问题,实现了环形缓冲区类!设计的RingBuffer类的接口与Muduo原本的` vector<char> ` 接口保持一致,目前使用编译期宏定义的方式切换,方便之后做压测对比。之后会考虑设计一个KBuffer纯虚类,然后将RingBuffer和Muduo的Buffer作为作为KBuffer子类,利用C++多态,使用基类的指针指向子类的对象,这样来切换真正所使用的Buffer类.
35
+ * 2020-04-22 Dev: 针对每一个新来的连接都会创建一个Tcp Connection,连接断开后Tcp Connection的资源又会被全部回收的问题,采取了Tcp Connection的回收机制,使用vector存储Tcp Connection,再次新来连接时,只用修改Tcp Connection管理的连接对象,即可实现Tcp Connection的重用
34
36
35
37
## Todo list
36
38
You can’t perform that action at this time.
0 commit comments