muduo网络库
FBI-PC
这个作者很懒,什么都没留下…
展开
-
muduo中boost.Asio的聊天服务器解析
muduo的这个聊天服务器达到的基本要求为:聊天服务本文实现的聊天服务非常简单,由服务端程序和客户端程序组成,协议如下:(1)服务端程序中某个端口侦听 (listen) 新的连接;(2) 客户端向服务端发起连接;(3)连接建立之后,客户端随时准备接收服务端的消息并在屏幕上显示出来;(4)客户端接受键盘输入,以回车为界,把消息发送给服务端;(5)服务端接收到消息之后,依次发送给每个连接...原创 2018-12-19 15:14:59 · 334 阅读 · 0 评论 -
muduo之Acceptor解析
首先Acceptor class,用于accept(2)新TCP连接,并通过回调通知使用者,它是内部class,供TcpServer使用,生命期由后者控制。首先我们看Acceptor类的数据成员: EventLoop* loop_; Socket acceptSocket_; Channel acceptChannel_; NewConnectionCallback newC...原创 2019-04-06 21:07:56 · 536 阅读 · 0 评论 -
muduo之TimerQueue解析
首先直到Linux下获取当前时间的函数有:time(2)/time_t(秒)ftime(3)/ struct timeb(毫秒)gettimeofday(2) /struct timeval(微秒)clock_getime(2) / struct timespec (纳秒)定时函数sleep(3)alarm(2)usleep(3)nanosleep(2)clock_nanosl...原创 2019-03-27 21:46:03 · 1053 阅读 · 3 评论 -
Reactor模式简要介绍
定义反应器设计模式(Reactor pattern)是一种为处理并发服务请求,并将请求提交到一个或者多个服务处理程序的事件设计模式。当客户端请求抵达后,服务处理程序使用多路分配策略,由一个非阻塞的线程来接收所有的请求,然后派发这些请求至相关的工作线程进行处理。其中Wikipedia上说:“The reactor design pattern is an event handling patt...转载 2019-03-26 14:54:40 · 797 阅读 · 0 评论 -
muduo 日志库学习(二) 对大佬的博客进行一点点补充 代码部分使用最新的代码讲解
转发原博:添加链接描述上一篇文章讲到muduo日志库的基础部分,现在来讲muduo日志库的异步日志工作流程。除了异步,muduo日志库还具有自动把数据从FILE结构体缓冲区flush到硬盘功能和定期roll(回滚)日志文件的功能。异步:异步日志由LogFile{.h, .cc}、AsyncLogging{.h, .cc}中定义的类来配合工作的。主要是有两个类 LogFile 和AsyncL...转载 2019-03-18 12:34:12 · 263 阅读 · 0 评论 -
muduo之ThreadPool实现及ThreadPool_test测试
首先我们得明白ThreadPool类是干嘛的,就是生成一个线程池。是基于Thread类实现的。首先我们看ThreadPool的数据成员。代码: mutable MutexLock mutex_; Condition notEmpty_ GUARDED_BY(mutex_); Condition notFull_ GUARDED_BY(mutex_); string na...原创 2019-03-21 16:19:18 · 516 阅读 · 0 评论 -
muduo 日志库学习(一)
muduo的日志库由LogStream{.h,.cc}、Logging{.h, .cc}、LogFile{.h, .cc}、AsyncLogging{.h, .cc}组成。这里主要说明一下,这些文件(主要是文件里面对应的类)之间是怎么关联,并协同工作的。LogStream类里面有一个Buffer成员(一个模板类,并非muduo::Buffer类)。该类主要负责将要记录的日志内容放到这个Buffe...转载 2019-03-17 23:42:39 · 458 阅读 · 0 评论 -
Muduo之Mutex、Condition、CountDownlatch解析及例子讲解
首先看看Mutex的源码namespace muduo{// Use as data member of a class, eg.//// class Foo// {// public:// int size() const;//// private:// mutable MutexLock mutex_;// std::vector<int>...原创 2019-03-11 17:09:18 · 529 阅读 · 0 评论 -
Muduo之单例模式pthread_once的使用
单例模式下对象只能有且仅有创建一次,所以适合那些只需要创建1次的对象,例如在一个项目下的日志线程对象,会一直伴随着,不会在中途销毁,也不会创建第二个对象。代码:#include<stdlib.h>#include<pthread.h>#include<iostream>#include<string>//#include<boost...原创 2019-03-11 09:43:36 · 301 阅读 · 0 评论 -
muduo之Buffer解析
为什么采用non-blocking网络编程中应用层buffer是必需的?non-blocking IO的核心思想是避免阻塞在read()或write()或其他IO系统调用上,这样可以最大限度地复用thread-of-control。让一个线程能服务于多个socket连接。IO线程只能阻塞在IO multiplexing函数上,如select/poll/epoll_wait。这样一来,应用层的缓冲...原创 2019-04-12 23:12:55 · 1475 阅读 · 0 评论