muduo
X-Programer
这个作者很懒,什么都没留下…
展开
-
muduo库的BlockingQueue和BoundBlockingQueue类剖析
转载:http://blog.csdn.net/freeelinux/article/details/53428629一:无界阻塞队列muduo库的BlcokingQueue实际上用的生产这消费者模型。我们知道生产者消费者模型一般有两种实现方式,可以利用信号量也可以利用条件变量实现,muduo库采用条件变量实现。BlockingQueue比较简单,它是线转载 2018-02-04 15:12:48 · 310 阅读 · 0 评论 -
muduo库的PollPoller类剖析
转载自:http://blog.csdn.net/freeelinux/article/details/53457060muduo库中唯一使用面向对象的地方就在Poller,它有两个派生类,分别是PollPoller和EPollPoller。可以实现两种I/O多路复用机制。PollerPoller的数据成员有:protected: typedef std::map<int, Chan...转载 2018-02-14 14:01:45 · 385 阅读 · 0 评论 -
muduo库的EpollPoller剖析
EpollPoller,是muduo库对I/O复用机制epoll的封装,不过默认使用的是EpollPoller。在EventLoop中初始化构造poller_,调用newDefaultPoller(this),构造默认的poller。EventLoop::EventLoop() : looping_(false), //表示还未循环 quit_(false), e...原创 2018-02-14 11:38:07 · 491 阅读 · 1 评论 -
muduo的日志库分析四之AsyncLogging类
用一个背景线程负责收集日志消息并写入日志文件,其它业务线程只管往这个“日志线程”发送日志消息,这称为"异步日志"。在多线程服务程序中,异步日志(也可叫“非阻塞日志”)是必需的。假如在网络IO线程或业务线程中直接写日志,写操作偶尔可能阻塞一会儿,业务中的响应请求可能会超时,或者耽误发送心跳包,在分布式系统中可能造成多米骨牌效应,例如误报死锁引发自动failover等。因此,在其它业务线程中应该彻底避原创 2018-02-07 11:10:57 · 1202 阅读 · 2 评论 -
muduo的日志库分析三之LogFile类
LogFile类图LogFile类主要负责日志的滚动,日志滚动有两种条件,一种是日志文件大小达到预设值,另一种是时间到达超过当天。由几个成员变量来控制日志滚动。// 基本的文件名,日志文件名由基本文件名和时间日期等元素构造 const string basename_; // 日志文件的极限容量,当日志文件的数据量达到这个限制之后就重新生成一个日志文件 cons原创 2018-02-07 10:44:35 · 790 阅读 · 0 评论 -
muduo的日志库分析二之Logger类
github地址:https://github.com/chenshuo/muduo/blob/master/muduo/base/Logging.hhttps://github.com/chenshuo/muduo/blob/master/muduo/base/Logging.ccLogger类图Logger使用时序图如下:原创 2018-02-07 10:30:37 · 689 阅读 · 0 评论 -
muduo的日志库分析一之LogStream
muduo日志库是C++ stream风格,这样用起来更自然,不必费心保持格式字符串和参数类型的一致性,可以随用随写,而且是类型安全的。stream风格的另一个好处是当输出的日志级别高于语句的日志级别是,打印日志是个空操作,运行是开销接近零,而printf风格不易做到。muduo没有用到标准库的iostream,而是自己写的LogStream类,这主要是出于性能。设计这个L原创 2018-02-07 10:18:35 · 2152 阅读 · 0 评论 -
C++ 中线程安全的对象生命期管理概要二
《Linux多线程服务端编程》的1.11节以对象池为例子讲解了shared_ptr技术与陷阱。假设有 Stock 类,代表一只股票的价格。每一只股票有一个惟一的字符串标识,比如 Google 的 key 是 "NASDAQ:GOOG",IBM 是 "NYSE:IBM"。Stock 对象是个主动对象,它能不断获取新价格。为了节省系统资源,同一个程序里边每一只出现的股票只有一个 Stock原创 2018-02-06 21:09:46 · 252 阅读 · 0 评论 -
muduo库的ThreadLocal类剖析
转载自:http://blog.csdn.net/freeelinux/article/details/53431275首先来看一个概念:线程特定数据>>>在单线程程序中,我们经常用全局变量共享数据。多线程环境下,全部变量被所有线程所共有。>>>但有时应用程序设计中有必要提供线程私有的全局变量,仅在某个线程中有效>>>POSIX线程库通过维护一定的数据结构来解决这个问题,这些数转载 2018-02-04 17:52:51 · 332 阅读 · 0 评论