
Muduo
YoungSusie
这个作者很懒,什么都没留下…
展开
-
Linux多线程服务端编程学习(四)finger服务的实现
例 七步实现finger服务本文以陈硕老师的 Linux多线程服务端编程 为参考书原创 2019-05-19 13:40:40 · 1265 阅读 · 0 评论 -
Muduo网络库的实现单线程网络服务器完善(九)
源码下载以及安装点击链接https://blog.youkuaiyun.com/YoungSusie/article/details/90021742原创 2019-07-07 15:32:49 · 423 阅读 · 0 评论 -
Muduo网络库的实现TcpConnction改进(八)
源码下载以及安装点击链接https://blog.youkuaiyun.com/YoungSusie/article/details/90021742本服务器只有一种方法可以断开连接:被动关闭,即对方先关闭连接,本地read返回 0 ,触发关闭逻辑。1、Channel class 的改动Channel class 新增了closecallback 事件回调,并且断言(assert ) 在事件处理期间本c...原创 2019-07-05 14:01:49 · 513 阅读 · 0 评论 -
Muduo网络库的实现TCP网络库(七)
Reactor 事件处理框架如图不同于传统的Reactor,将timers 做成循环中单独的一步,muduo将 timers 和IO handlers 视为等同的。1、Acceptor classAcceptor class 用于 accept 新的TCP 连接, 并通过回调通知使用者,这是一个内部class , 供 Tcpserver 使用,Acceptor class 的生命期 由 T...原创 2019-07-04 18:48:58 · 539 阅读 · 0 评论 -
Muduo网络库的实现TimerQueue定时器(五)
考虑为什么是 -1?给前面的EventLoop 加上定时的功能,传统的Reactor 通过控制select 和 poll 的等待时间来实现定时,现在Linux 系统中有了timefd ,可以用和处理IO事件相同的方式来处理定时。timerfd_create() 函数把时间变为一个文件描述符,该“文件” 在定时器超时的那一刻变得可读,可以融入Reactor 模型中,用同一的方式处理IO ...原创 2019-06-27 15:47:26 · 520 阅读 · 0 评论 -
Muduo网络库的实现Channel class(二)
其次还需要注意:Reactor 最核心的 事件分发机制,即将IO复用拿到的IO事件分发给各个对应的文件描述符的事件处理函数。每个Channel对象自始自终只属于一个Event Loop,因此每个Channel 对象只属于一个IO线程。 每个Channel 对象自始自终只负责一个文件描述符的IO事件分发, 但是Channel 对象并不拥有这个文件描述符,不会在析构的时候关闭这个文件描述符。 ...原创 2019-06-24 10:10:34 · 610 阅读 · 0 评论 -
Muduo网络库的实现runInLoop(六)
1、runInLoopEvent Loop 有一个非常有用的功能:在它的IO线程内执行某个用户任务的回调, 即EventLoop::runInLoop(const Functor & cb), 其中 functor是 boost::function<void()>。如果用户在当前IO线程调用这个函数,回调会同步进行;如果用户在其他线程调用runInLoop(),cb会被加入队...原创 2019-07-02 11:03:07 · 525 阅读 · 0 评论 -
Muduo网络库的实现EventLoop class 的改动(四)
考虑为什么是 -1?EventLoop class 新增了quit() 成员函数,可以终止事件循环,令标志变量quit_ 的值为 true 即可,但是调用quit() 并不是立马起作用,而是在下一次检查 loop() 的while(!quit_) 的时候起效。 如果EventLoop::loop 正阻塞在某个调用中,quit() 不会立刻生效。1、学习笔记EventLoop 通过...原创 2019-06-26 15:46:34 · 404 阅读 · 0 评论 -
Muduo网络库的实现EventLoop class (一)
muduo网络库采取的模式为: one loop per thread + thread pool0、什么都不用做的EventLoop classone loop per thread 每个线程只能由一个EventLoop对象,其构造函数会用__thread 类型的变量记住本对象所属的线程ID。创建了EventLoop 对象的线程是IO线程,其主要功能是运行事件循环loop(),事件循环 必...原创 2019-06-23 12:52:06 · 423 阅读 · 0 评论 -
Muduo网络库的实现Poller class(三)
其次还需要注意:Poller class是IO multiplexing 的封装。Poller 是Event Loop的间接成员,直供其所属Event Loop 在IO线程 调用,因此无需加锁,其生命期与Event Loop 一样,Poller 不拥有Channel ,Channel 在析构的时候需要自己注销,避免空悬指针。...原创 2019-06-25 08:34:34 · 580 阅读 · 0 评论 -
Linux多线程服务端编程学习(五)echo大小写互换与ROT13加密
1、修改EchoServer::onMessage(),实现大小写互换 修改EchoServer::onMessage()收到msg之后进行转换 for(unsigned int i = 0;i<msg.size();++i){ if(msg[i] >= 'a' && msg[i] <= 'z'){ msg[i] = char(msg[i] - ...原创 2019-05-21 15:53:53 · 777 阅读 · 0 评论 -
Linux多线程服务端编程学习(一)Centos7安装muduo网络库
安装前的准备工作1、github下载muduo源码,https://github.com/chenshuo/muduo我是以 root 权限登陆的(root权限登陆需要小心操作,不是很熟悉的,还是普通用户登陆,接下来的操作前面加 sudo),下载的文档在 /root/Downloads 文件夹下。此处需要注意,下载的是ZIP文件,因此解压需要用安装支持ZIP的工具,此处读者可自行解...原创 2019-05-09 11:11:07 · 3001 阅读 · 4 评论 -
Linux多线程服务端编程学习(二)如何使用muduo网络库 Centos7
安装、编译muduo,使用muduo下载、安装编译muduo的过程 点击 https://mp.youkuaiyun.com/mdeditor/90021742#本文以 陈硕 老师git 网站上 muduo-tutorial-master 程序为例来解释如何运用muduo库,以及其中可能会遇到的问题与解决办法。1、下载示例程序包下载地址 https://github.com/chenshuo/mu...原创 2019-05-09 15:57:11 · 1520 阅读 · 0 评论 -
Linux多线程服务端编程学习(三)echo服务的实现
例 经典的echo回显服务 本文以陈硕老师的Linux多线程服务端编程为参考书1、定义EchoServer class,不需要派生自任何基类。class EchoServer{ public: EchoServer(muduo::net::EventLoop* loop, const muduo::net::InetAddress& list...原创 2019-05-22 14:10:42 · 913 阅读 · 0 评论 -
Muduo网络库的实现多线程(十)
1、EventLoopThreadPool用 one loop per thread 的思想实现多线程TcpServer 的关键步骤是在新建TcpConnection 的时候从 event loop pool (事件循环池)中挑选一个 loop 给 TcpConnection 用。也就是说多线程 TcpServer 自己的EventLoop 只用来接收新连接,而新连接会用其他的 EventLoo...原创 2019-07-23 13:54:24 · 622 阅读 · 0 评论