muduo网络库学习
GK_2014
每天努力一点,坚持一点,成长一点,一段时间再回头,就会发现这就是成长的路。
展开
-
muduo网络库之Acceptor、TcpServer
本篇博客针对Acceptor类和TcpServer类做下小结。博客代码来自于陈硕的muduo网络库,github地址https://github.com/chenshuo/muduo学习笔记:Acceptor类专注于做一件事情,就是在服务端接收所有的客户端请求,将连接成功的客户端交给TcpServer进一步处理。当服务端处于“1+N”多线程模式时,Acceptor的所有IO事件在“1”代表的线程中执行,连接进来的多个客户端在“N”代表的线程池中执行IO事件。TcpServer类作为用户可见类原创 2020-08-10 09:33:07 · 260 阅读 · 0 评论 -
muduo网络库之EventLoopThread、EventLoopThreadPool
本篇博客针对EventLoopThread类和EventLoopThreadPool类做下小结。博客代码来自于陈硕的muduo网络库,github地址https://github.com/chenshuo/muduo学习笔记:EventLoopThread类又叫IO线程类,专门用来处理IO事件。在它的线程函数里会创建一个EventLoop对象,执行loop循环处理IO事件。这个EventLoop对象会传递出去供外部对象使用,比如外部创建的socket、定时器会把他们的读写操作放到该loop循环中原创 2020-08-09 11:25:38 · 272 阅读 · 0 评论 -
muduo网络库之TimerQueue类
这篇博客针对TimerQueue类做下小结。博客代码来自于陈硕的muduo网络库,github地址https://github.com/chenshuo/muduo工作原理:TimerQueue顾名思义表示该类管理这一个时间队列,这个时间队列的内部结构是std::set,该set的元素类型是std::pair<Timestamp, Timer*>,即先按时间戳对定时队列从小到大进行排序,对于时间戳相同的定时再按地址值排序,该set保证了定时队列按时间排序保存。TimerQueue类管原创 2020-08-06 09:23:42 · 288 阅读 · 0 评论 -
muduo网络库之EventLoop类
本篇博客针对EventLoop类做下小结。博客代码来自于陈硕的muduo网络库,github地址https://github.com/chenshuo/muduo学习笔记:muduo网络库的线程类准许你one loop per thread,顾名思义每个线程只能有一个EventLoop对象,因此EventLoop独享的构造函数会检查当前线程是否已经创建了其它EventLoop对象,如果已经创建则终止程序。创建了EventLoop的线程就是IO线程,其主要功能是运行时间循环EventLoop::l原创 2020-08-08 19:41:37 · 359 阅读 · 0 评论 -
muduo网络库之Channel类
本篇博客针对Channel类做下小结。博客代码来自于陈硕的muduo网络库,github地址https://github.com/chenshuo/muduo工作原理:Channel对象自始至终负责一个文件描述符fd的IO事件分发,Channel对象通常被更上层的类拥有,比如TimerQueue,TimerQueue在构造期间会实例化一个定时器对象,timerfd_为该定时器fd,随后利用该定时器fd实例化一个Channel对象timerfdChannel_,设置该Channel的回调函数和ev原创 2020-08-07 09:25:43 · 563 阅读 · 0 评论 -
muduo网络库之Poller类
本片博客针对Poller类及其2个派生类PollPoller、EPollPoller做下小结。博客代码来自于陈硕的muduo网络库,github地址https://github.com/chenshuo/muduo工作原理:muduo网络库中Poller类是一个抽象类,用户使用PollPoller或者EPollPoller类。Poller类管理这一个文件描述符fd和Channel指针的映射表channels_,同一个IO线程内所有用户注册的文件描述符都保存在这里,包括定时器或socketfd等。该类原创 2020-08-05 11:21:44 · 332 阅读 · 0 评论