![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
muduo
Ideal Dragon
没有什么好运气,只能一直保持努力。
展开
-
muduo源码学习(二):定时器
TimerQueue定时器 在Reactor的基础之上,muduo又添加了定时器的功能。有了定时器,我们就可以将内部定时器事件或者编程者在程序中给定的一定时刻需要执行的任务,就是EVENTLOOP中的runAt run After runEvery等 与 外部的IO事件一起处理。 muduo的定时器功能主要由三个class实现:Timerid Timer TimerQueue,编程...原创 2019-06-05 15:52:14 · 579 阅读 · 0 评论 -
muduo源码阅读(三):TcpServer
Accptor server 功能 :TcpServer负责管理Tcpconnction,而一个Tcpconnction则是代表了一次TCP连接。 类图: 从测试代码读起 先上一段测试代码 int main() { printf("main(): pid = %d\n", getpid()); muduo::InetAddress listenAddr(9981); muduo::...原创 2019-06-16 21:32:08 · 349 阅读 · 0 评论 -
muduo源码学习(一):Reactor模式与muduo
Reactor模式 reactor模式一共有5种角色构成: Handle(句柄或者描述符) : 本质上是一种资源,由操作系统提供。因为再windows中我们叫句柄handle,在linux中我们可以认为就是描述符。作为一个事件代号。举例说,网络编程中的socket描述符。事件既可以来自于外部(如:客户端的连接请求,客户端的发送的数据可读事件),也可以来自于内部(操作系统产生的定时器事件等)。它本...原创 2019-06-04 22:50:02 · 163 阅读 · 0 评论 -
muduo源码阅读(四):Buffer的设计
Buffer设计 muduo的图示: buffer的必要性 muduo的IO模型采用的是阻塞式的,因此线程只能阻塞在 seletc/poll/epoll_wait 当中,而不能阻塞的write/read函数中,这么一来,应用层的缓冲是必须的。每一个TCP socket都要配备一个input buffer和一个 output buffer。 具体场景举例 outputbuffer的必要性 目的:...原创 2019-06-24 21:11:10 · 196 阅读 · 0 评论 -
muduo源码阅读(五):日志库分析(一)
muduo日志库分析(一) muduo的日志库由**LogStream{.h,.cc}、Logging{.h, .cc}、LogFile{.h, .cc}、AsyncLogging{.h, .cc}**组成。这里主要说明一下,这些文件(主要是文件里面对应的类)之间是怎么关联,并协同工作的。 首先各个类之间的关系如图所示,是相互包含的。 LogStream类里面有一个Buffer成员(一个模板类F...原创 2019-07-11 16:25:01 · 238 阅读 · 0 评论 -
muduo源码阅读(六)——日志库分析(二)
muduo日志库分析(二) 上一篇文章,主要分析了LogStream{.h,.cc}、Logging{.h, .cc},这两部分主要是日志库的前端部分,具体可以看muduo日志库分析(一) 在文章的最后,写出了日志库将buffer中的数据输出的函数是在Logging的析构函数中实现的,而输出的destination则是由 OutputFunc 来实现的,通过 Logger::setOutput 函...原创 2019-07-19 16:08:39 · 195 阅读 · 0 评论