Skip to content

guapia233/Refactoring-muduo

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 

Repository files navigation

重构 muduo 网络库

  1. 高并发非阻塞网络库
    采用多Reactor多线程模型,实现高并发非阻塞的网络库。

  2. 智能指针防止悬空指针
    TcpConnection继承自enable_shared_from_this,其目的是防止在不该被释放对象的地方释放对象,导致悬空指针的产生。
    这样可以避免用户可能在处理OnMessage事件时删除对象,确保TcpConnection以正确方式释放。

  3. 唤醒机制
    EventLoop中使用了eventfd来调用wakeup(),让mainloop唤醒subloopepoll_wait阻塞。

  4. 一致性哈希轮询算法
    新增ConsistenHash头文件,采用一致性哈希轮询算法,将EventLoop合理分发给每一个TcpConnection对象。
    此外,支持自定义哈希函数,满足高并发需求,但需要注意虚拟节点数量不能过少。

  5. 线程创建有序性
    Thread中通过C++ lambda表达式以及信号量机制,保证线程创建的有序性,确保线程正常创建后再执行线程函数。

  6. 非阻塞核心缓冲区
    Buffer.*muduo网络库非阻塞的核心模块。当触发相应的读写事件时,内核缓冲区可能没有足够空间一次性发送数据,此时有两种选择:

    • 第一种是将其设置为非阻塞,但可能造成 CPU 忙等待;
    • 第二种是阻塞等待内核缓冲区有空间再发送,但效率低下。

    为了解决这些问题,Buffer模块将多余数据存储在用户缓冲区,并注册相应的读写事件监听,待事件再次触发时统一发送。

  7. 灵活的日志模块
    Logger支持设置日志等级。在调试代码时,可以开启DEBUG模式打印日志;而在服务器运行时,为了减少日志对性能的影响,可关闭DEBUG相关日志输出。

About

重构 muduo 网络库

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors