从epoll构建muduo-3 加入第一个类,顺便介绍reactor

AI权益加码!Claude Code、Cursor等20+工具免费用! 购周边限时加赠Coding Plan Lite,畅享主流AI工具!学习进阶更高效! 阅读详情
epoll构建muduo-1 mini-muduo介绍 前段时间看了陈硕写的muduo网络库(github, 书, blog),觉得这是一个学习网络编程的非常好的素材。为了更好的了解这个库,自己花了点时间,模仿其源码从零开始编写了一个极小的mini-muduo(起这名字没版权问题吧:-)),代码编写过程中有很多收获,我打算写几篇文章记录下心得。有几个问题先说明一下: Q1:网络库很多,为什么选择muduo?     1 库的功能相对完整,基 阅读详情

相关推荐

epoll构建muduo-2 最简单的epoll

mini-muduo v 0.01版本,这是mini-muduo第一个版本,整个程序是一个100行的epoll示例 下面粘贴的代码省略了头文件引用,完整可运行的示例可从github下载,使用命令git checkout v0.01可切换到此版本,在线浏览到这里 #define MAX_LINE 100 #define MAX_EVENTS 500 #define MAX_LISTENFD

voidccc的专栏 6170

epoll实现Reactor模式

在简单介绍epoll api之后,本文使用epoll实现Reactor模型,创建回射服务器

大草的博客 946

epoll构建muduo-11 单线程Reactor网络模型成型

mini-muduo v0.10版本,修整代码版本。mini-muduo完整可运行的示例可从github下载,使用命令git checkout v0.10可切换到此版本,在线浏览此版本到这里。 这个版本的改动不大,主要修改了命名规范问题,借着这个版本重点分析一下muduo里的三个文件描述符。

voidccc的专栏 4003

基于epoll实现reactor模式

epoll基础上封装成reacotr模式

qq_42301955的博客 424

基于EpollReactor模式

Reactor反应堆模式,也就做分发者模式也叫做通知者模式。它是一种设计模式将就绪事件派发给对应服务器处理程序:其基本理念如下。

qq_56999918的博客 1299

基于epoll实现Reactor服务器

创建epoll模型:调用epoll_create,在文件描述符表添加一个描述符,生成对应的文件结构体结构体保存对应生成eventpoll结构体的地址,该结构中有rbr(监视事件红黑树),rdllist(就绪事件队列)等等。添加一个fd到epoll中:调用epoll_ctl,通过epollfd在进程文件描述符表中找到对应的file,然后在对应的文件结构体中的标识符将特定指针强转为eventpoll,访问rbr,增加新结点在树中,并且添加对应的回调函数到对应fd的文件结构体中。

2201_75352618的博客 1384

高级IO:selcet\epoll + 反应堆(Reactor)

(一)五种IO模型"就让我是一道微光,能让你拥有灿烂的锋芒"(一)五种IO模型如何理解高级IO?IO=等待 + 数据拷贝高效IO:减少"等待"花费的单位时间,尽可能提高IO效率!(1)阻塞IO阻塞 IO顾名思义:阻塞IO: 在内核将数据准备好之前, 系统调用会一直等待.举个钓鱼的例子,再鱼没咬钩之前,死盯着杆子。一旦鱼咬钩,就立马拉杆。(2)非阻塞IO显然,非阻塞IO就阻塞IO完全对立。如果内核还未将数据准备好, 系统调用仍然会直接返回。并且返回EWOULDBLOCK错误码。

RNGWGzZs的博客 912

epoll构建muduo-13 Reactor + ThreadPool 成型

本版是个里程碑版本,可以通过本版了解多线程是如何通过IO线程读/写网络数据的,在前一个版本v0.12重点介绍了基础知识的前提下,本篇着重分析多线程逻辑里最重要的三个方法EventLoop::runInLoop/EventLoop::queueInLoop/EventLoop::doPendingFunctors。下面逐步介绍本版本修改的细节,三个方法放在最后的EventLoop节。

voidccc的专栏 2941

epoll构建muduo-8 加入发送缓冲区接收缓冲区

mini-muduo v0.07版本,这个版本是加入了发送缓冲区接收缓冲区的初始版本,后续v0.08完善了缓冲区的实现。mini-muduo完整可运行的示例可从github下载,使用命令git checkout v0.07可切换到此版本,在线浏览此版本到这里 1 为什么要有发送缓冲区接收缓冲区,muduo作者已经在>节中详细介绍过了。建议有条件的同学直接看书。我觉得这部分知识非常重要所以

voidccc的专栏 3896

Linux网络】从0手写Reactor反应堆(三):代码收尾、连接生命周期管理与多Reactor扩展思路

上一篇我们把Reactor的核心逻辑彻底填实了:ET模式下的非阻塞循环读写、应用层缓冲区解决TCP粘包、IO层/协议层/业务层三层解耦,整个请求从接收、解析到响应的链路已经完整跑通。但框架还剩几块收尾工作没有落地:写事件的动态开关只有调用接口没有底层实现、客户端断开或出错时连接没有真正从反应堆移除、文件描述符资源也没有正确释放。本篇我们先把这些代码细节补完,让单Reactor里的每一条连接,从被accept创建、到数据收发、再到异常/正常断开,形成完整的生命周期闭环;随后汇总所有核心文件的完整代码,方便整体

会当凌绝顶,一览众山小 3791

【C++/Linux实战项目】仿muduo库实现高性能Reactor模式TCP服务器(深度解析)

本文实现了一个基于多Reactor模式的高性能TCP服务器,项目完整实现了TCP服务器的核心功能,包括连接管理、事件监控、数据收发等,可作为网络编程学习的实践案例。

yanlou233的博客 1406

Linux网络】从0手写Reactor反应堆(一):核心框架搭建——连接抽象与事件派发

学习 Linux 网络编程的朋友们,想必都写过原生 epoll 服务器:把 listen_fd 扔进 epoll,事件循环里等就绪,然后判断是监听套接字就 accept,是普通套接字就 recv/send。写小 demo 还好,一旦业务复杂起来,代码会变得极其臃肿 —— 监听逻辑、读写逻辑、错误处理、缓冲区管理全揉在事件派发里,改一处动全身。这也是为什么工业级网络库几乎都采用 Reactor 模式:它的核心思想就是先描述,再组织。把每一个文件描述符都封装成独立的连接对象,把多路复用、事件派发、IO 处理分层

会当凌绝顶,一览众山小 4621

Muduo---Channel

epoll_wait拿到fd查表找回调 执行回调(面向过程,有查找开销,逻辑分散)。epoll_wait直接拿到Channel*(面向对象,零查找开销,高内聚)。成员变量解决的问题核心意义防止“边处理事件,边销毁自己”导致的 Use-After-Free作为防御性编程的手段,通过assert(!确保 Channel 析构时的绝对安全性。

2302_80013723的博客 372

深入理解Reactor模式:从select到epoll再到事件循环

对比select poll epoll的不同,深入讲解reactor以及目前实际应用

qq_52160651的博客 304

Muduo网络库源码分析(一) EventLoop事件循环(PollerChannel)

从这一篇博文起,我们开始剖析Muduo网络库的源码,主要结合《Linux多线程服务端编程》网上的一些学习资料! (一)TCP网络编程的本质:三个半事件 1. 连接的建立,包括服务端接受(accept) 新连接客户端成功发起(connect) 连接。TCP 连接一旦建立,客户端服务端是平等的,可以各自收发数据。 2. 连接的断开,包括主动断开(close 或shutdown) 被动断开

NK_test的博客 7005

(二)什么是Reactor模式

Reactor模式(反应堆模式):这便是libevent的中心思想。在常规的I/O多路复用中采用selectpoll、epoll等来实现,而将这些机制封装而成的就是I/O多路复用模式,Reactor就是其中之一。通俗的来讲,它就是通过回调机制实现的。我们只需将事件的接口注册到Reactor上,当事件发生之后,会回调注册的接口。比如你订闹钟明早六点半起床,那么在六点半之前你就可以安心睡觉,到了六点半

Move_now的博客 2471

Linux学习笔记14—IO多路复用:select/poll/epollReactor模式

来个offer吧(少年祈祷中)

CS_boy的博客 1303
上一篇: 从epoll构建muduo-2 最简单的epoll
下一篇: 从epoll构建muduo-4 加入Channel
voidccc
博客等级 码龄14年 149粉丝 28原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值