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-10 Timer定时器
mini-muduo v0.09版本,实现了Timer定时器。mini-muduo完整可运行的示例可从github下载,使用命令git checkout v0.09可切换到此版本,在线浏览此版本到这里。 这个版本是一个里程碑版本,到这个版本为止,可以说一个单线程的Reactor模式网络库基本成型,程序里的类各司其职,协同完成网络数据的首发。后续版本只是在此基础上增加了多个工作线程(耗费CPU
eventloop 模块总结
事件循环(event loop)就是任务在主线程不断进栈出栈的一个循环过程。任务会在将要执行时进入主线程,在执行完毕后会退出主线程。在Linux中创建一个事件循环(Event Loop)的基本思想就是在程序运行期间保持一个无限运行的循环,这个循环可以监听并响应不同的事件,例如I/O操作,定时器,信号等等。
Muduo网络库——EventLoopThreadPool、EventLoopThread、EventLoop浅析
muduo的并发模型为one loop per thread+ threadpool。 EventLoopThread是事件循环线程,包含一个Thread对象,一个EventLoop对象。在构造函数中,把EventLoopThread::threadFunc 注册到Thread对象中(线程启动时会回调)。 EventLoopThreadPool是事件循环线程池,管理所有客户端连接,每个线程都有唯...
Event Loop--epoll-协程--理解(生活的案例理解)
Event Loop(事件循环)白话文解释 协程 epoll
Netty EpollEventLoopGroup
https://blog.csdn.net/alex_xfboy/article/details/89643638 Java NIO根据操作系统不同,比如macosx是KQueueSelectorProvider、windows有WindowsSelectorProvider、Linux有EPollSelectorProvider或PollSelectorProvider,可见不同的系统对nio...
快来体验快速通道,netty中epoll传输协议详解
在前面的章节中,我们讲解了kqueue的使用和原理,接下来我们再看一下epoll的使用。两者都是更加高级的IO方式,都需要借助native的方法实现,不同的是Kqueue用在mac系统中,而epoll用在liunx系统中。epoll的使用也很简单,我们还是以常用的聊天室为例来讲解epoll的使用。对于server端来说需要创建bossGroup和workerGroup,在NIO中这两个group是NIOEventLoopGroup,在epoll中则需要使用EpollEventLoopGroup: 接着需要将
muduo之EventLoop
EventLoop.cc就相当于一个reactor,多线程之间的函数调用(用eventfd唤醒),epoll处理,超时队列处理,对channel的处理。运行loop的进程被称为IO线程,EventLoop提供了一些API确保相应函数在IO线程中调用,确保没有用互斥量保护的变量只能在IO线程中使用,也封装了超时队列的基本操作。 EventLoop.h // Copyright...
muduo库EventLoop类源码解析
EventLoop也称为事件循环,从调用epoll_wait系统调用捞取到就绪事件到再次阻塞到epoll_wait上(阻塞到内核中的就绪队列上了)称为一次事件循环。muduo库的EventLoop在捞取完就绪事件后会立即执行就绪事件的回调。EventLoop还有一个线程安全的任务队列。在执行完就绪事件的回调后不会立即阻塞到epoll_wait上,他会在执行完任务队列中的任务后在阻塞到就绪队列上。为什么要搞一个线程安全的任务队列呢?muduo库的设计思想是。
[muduo网络库]-muduo库EventLoop类解析
本贴用于记录库的学习过程,以下是关于EventLoop类的个人理解。EventLoop作为三个核心组件之一,可以说是规定了一条流水线,让该线的所有事件有规律有秩序地执行。
muduo库的EventLoop类剖析
一:采用的线程通信机制 首先来看一下一个进程(线程)如何通知另一个个等待中的(线程),有三种方法: 1.pipe,使用fd[0] 为读端,fd[1]为写端,半双工。等待线程关注fd[0]的可读事件。 2.socketpair,也有一对文件描述符,可用于双向通信,全双工。 3.eventfd。eventfd是一个比pipe更搞笑的线程间事件通知机制,一方面它比pipe少用一个pipe des
从epoll构建muduo-13 Reactor + ThreadPool 成型
本版是个里程碑版本,可以通过本版了解多线程是如何通过IO线程读/写网络数据的,在前一个版本v0.12重点介绍了基础知识的前提下,本篇着重分析多线程逻辑里最重要的三个方法EventLoop::runInLoop/EventLoop::queueInLoop/EventLoop::doPendingFunctors。下面逐步介绍本版本修改的细节,三个方法放在最后的EventLoop节。
muduo源码分析---EventLoop类
现在暂时记住TcpConnection是TcpServer中Acceptor关注的监听套接字上accept新连接后被初始化的一个对象,接下来分析下EventLoop 这个东西才是真正驱动库的核心,是别的类(EpollPoller Acceptor )帮助他完成了库的功能,看看内部是怎么实现的。 EventLoop: 这个类中最重要的成员就是poller_,这个
[Muduo网络库]:三大核心库Channel类、Poller/EpollPoller类以及EventLoop类
除了循环,什么都没做的loop()",这句话的意思并非是loop()只是一个空循环,而是它的主要功能并未通过自身定义的函数实现。loop函数中主要通过调用一次Poller::poll方法它就能给你返回事件监听器的监听结果,然后调用这些Channel里面保管的不同类型事件的处理函数。loop()函数最主要的作用是实现循环,负责驱动“循环”的重要模块。Channel类其实相当于一个文件描述符的保姆!2.2.1 Channel类概述-我在地铁站里吃闸机。
【muduo源码学习】源码分析之Channel、EventLoop和Selector
在本篇本章中,将重点介绍该模型中的IO事件处理部分在 muduo 网络库中是如何实现的。
Muduo库代码剖析 : EventLoop
EventLoop类似于Reactor模型中的**反应堆**(Reactor)和**事件分发器**(Demultiplex)的合并, 其目的在于高效的接收事件, 并正确分配给对应的事件处理器.
【muduo源码剖析】EventLoop设计分析
muduo中事件循环的核心类EventLoop的源码剖析
muduo网络库学习—EventLoop,Channel,Poller(2)
muduo网络库学习(2) 文章目录muduo网络库学习(2)前言一、oneloop per thread二、EventLoop事件循环流程1.事件循环流程2.读入数据总结 前言 本章主要记录muduo库中的事件循环功能实现即EventLoop类实现。 一、oneloop per thread 为了保证每一个线程只有一个loop循环,muduo在每个线程中创建了一个变量记录EventLoop的指针。 namespace mduo{ namespace net{ // 当前线程EventLoop对象指
muduo中eventloop、channel、fd解析
最近在研究muduo源代码,因为之前的项目内部的逻辑与muduo类似,不过使用的是libevent完成内核的构造,muduo使用了自己写的poll和epoll方式完成内部的io复用。之前的项目与muduo使用的策略一致,使用了主线程专门用于接收tcp连接,连接后的connection发送到多个子线程中来支持高并发。 eventloop.h 这个类是muduo的核心,头文件如下(已做注释): ///...
6304




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



