mini-muduo版本传送门
version 0.00 从epoll构建muduo-1 mini-muduo介绍
version 0.01 从epoll构建muduo-2 最简单的epoll
version 0.02 从epoll构建muduo-3 加入第一个类,顺便介绍reactor
version 0.03 从epoll构建muduo-4 加入Channel
version 0.04 从epoll构建muduo-5 加入Acceptor和TcpConnection
version 0.05 从epoll构建muduo-6 加入EventLoop和Epoll
相关推荐
从epoll构建muduo-1 mini-muduo介绍
前段时间看了陈硕写的muduo网络库(github, 书, blog),觉得这是一个学习网络编程的非常好的素材。为了更好的了解这个库,自己花了点时间,模仿其源码从零开始编写了一个极小的mini-muduo(起这名字没版权问题吧:-)),代码编写过程中有很多收获,我打算写几篇文章记录下心得。有几个问题先说明一下: Q1:网络库很多,为什么选择muduo? 1 库的功能相对完整,基
muduo中的EPollPoller反应堆类
文章目录EPollPoller.hEPollPoller::updateChannel()EPollPoller::update()EPollPoller::removeChannel EPollPoller.h EPollPoller的主要功能是实现Poller类保留的纯虚函数接口poll(epoll_wait)、updateChannel(epoll_ctl)、removeChannel(epoll_ctl) muduo中EPollPoller.h如下: class EPollPoller : pub
从epoll构建muduo-6 加入EventLoop和Epoll
mini-muduo v0.05版本,完整可运行的示例可从github下载,使用命令git checkout v0.05可切换到此版本,在线浏览此版本到这里 本版将程序的主要类都加入进来了,这个版本可以作为一个里程碑版本,最重要的修改是加入了两个类EventLoop和Epoll。加入这两个类后,程序代码逻辑就相对清晰多了。为了有个更直观的了解,我们对照之前介绍的最简单epoll示例(从epoll构
muduo核心组件分析
muduo的设计真的很巧妙。不少人说这个网络库的源码剖析起来比较容易,但是我感觉里面调用来调用去还是比较复杂的。 根据打印的日志分析了muduo库的流程。如果有不对的地方,欢迎朋友们指正。 以 echo 为例,下面把 maic.cc, echo.h, echo.cc 整在一起了,就整在 main.cc 里。子线程设置3个。主要关注各个文件里的函数是怎样跳转的。 class EchoServer { public: EchoServer(muduo::net::EventLoop* loop,
[muduo网络库]——muduo库三大核心组件之 Poller/EpollPoller类(剖析muduo网络库核心部分、设计思想)
muduo 是由陈硕大佬个人开发的 TCP 网络库,本专栏使用c++11重构了Muduo库中核心的Multi-Reactor架构,剖析大佬核心的代码设计思想,希望能够理清自己的思路,也希望能够帮助到大家。
重写muduo网络库:具体的多路分发器:EPollPoller
muduo 对epoll的封装
从epoll构建muduo-4 加入Channel
mini-muduo v 0.03版本,这是个版本最重要的修改是加入了一个名为Channel的类。完整可运行的示例可从github下载,使用命令git checkout v0.03可切换到此版本,在线浏览此版本到这里 介绍一下Channel类,先看其声明,这里特别要注意_events和_revents,前者是要关注的事件,后者是发生的事件,不仔细看容易混淆。名字的来源是poll(2)的struc
从epoll构建muduo-3 加入第一个类,顺便介绍reactor
mini-muduo v 0.02版本,这个版本添加的内容非常少,完整可运行的示例可从github下载,使用命令git checkout v0.02可切换到此版本,在线浏览到这里 #include "TcpServer.h" int main(int args, char** argv) { TcpServer tcpserver; tcpserver.start();
从epoll构建muduo-9 加入onWriteComplate回调和Buffer
mini-muduo v0.08版本,这个版本完善了缓冲区的实现。mini-muduo完整可运行的示例可从github下载,使用命令git checkout v0.08可切换到此版本,在线浏览此版本到这里 本版本有两处重要修改,首先实现了IMuduoUser的onWriteComplate回调,这样当用户一次传送大量数据到网络库时,用户会在数据发送完成后收到通知。当然了发送小量数据完成时也
从epoll构建muduo-7 加入IMuduoUser
mini-muduo v0.06版本,这个版本应该算是一个里程碑版本,最重要的修改是将库和库的用户分离。完整可运行的示例可从github下载,使用命令git checkout v0.06可切换到此版本,在线浏览此版本到这里 1 在这个版本中,我们的网络库才真正的能被称为“库”。整个mini-muduo程序现在被分成了两部分,一边是库,另一边是库的用户。EchoServer这个类就是用户了,用户关
从epoll构建muduo-5 加入Acceptor和TcpConnection
mini-muduo v0.04版本,这是个版本最重要的修改是加入了两个类Acceptor和TcpConnection。完整可运行的示例可从github下载,使用命令git checkout v0.04可切换到此版本,在线浏览此版本到这里 1 回顾下v0.03版本,所有的socket事件都是在TcpServer::OnIn(命名不规范后续会改动)里处理的,包括接受新连接和读写数据,那实在是没
从epoll构建muduo-12 多线程入场
多线程代码被加入到mini-muduo,本篇主要介绍Linux多线程编程的5个类 1 Mutex 2 Condition 3 BlockingQueue 4 Thread 5 ThreadPool
从epoll构建muduo-10 Timer定时器
mini-muduo v0.09版本,实现了Timer定时器。mini-muduo完整可运行的示例可从github下载,使用命令git checkout v0.09可切换到此版本,在线浏览此版本到这里。 这个版本是一个里程碑版本,到这个版本为止,可以说一个单线程的Reactor模式网络库基本成型,程序里的类各司其职,协同完成网络数据的首发。后续版本只是在此基础上增加了多个工作线程(耗费CPU
从epoll构建muduo-11 单线程Reactor网络模型成型
mini-muduo v0.10版本,修整代码版本。mini-muduo完整可运行的示例可从github下载,使用命令git checkout v0.10可切换到此版本,在线浏览此版本到这里。 这个版本的改动不大,主要修改了命名规范问题,借着这个版本重点分析一下muduo里的三个文件描述符。
从epoll构建muduo-13 Reactor + ThreadPool 成型
本版是个里程碑版本,可以通过本版了解多线程是如何通过IO线程读/写网络数据的,在前一个版本v0.12重点介绍了基础知识的前提下,本篇着重分析多线程逻辑里最重要的三个方法EventLoop::runInLoop/EventLoop::queueInLoop/EventLoop::doPendingFunctors。下面逐步介绍本版本修改的细节,三个方法放在最后的EventLoop节。
muduo网络库剖析——监听者EpollPoller类
基于c++的muduo网络库开源项目深度剖析!超级加分的简历项目,期待您的讨论~
muduo库学习笔记-如何保证数据成功发送
如何保证数据一定能够被发出去 在网络编程中常常利用write将数据拷贝到内核的发送缓冲区,然后由协议将数据发送到对端,但是如何保证一次write能够将所有的数据都拷贝到内核缓冲区呢?如果还有数据没有被拷贝进去怎么办?如果拷贝的过程中内核缓冲区满了怎么办?如果拷贝的过程中write返回-1错误又怎么办?针对这些问题,muduo库都进行了解决。 muduo是怎么发送数据的? muduo库并不是将所...
muduo网络库--功能架构总结
muduo总结
c++学习笔记【04】-- muduo 网络库的核心功能实现
muduo网络库的核心功能实现。
1万+




被折叠的 条评论
为什么被折叠?



