- 2024-09-13Redis的IO模型
RedisIO模型RedisIO模型使用的是基于Reactor模式的I/O多路复用模型。这个模型通过单线程事件循环来处理所有的客户端请求和响应。基本模式1.Reactor模式Reactor模式是一种用于处理并发I/O操作的设计模式。它包含以下几个组件:多路复用器(Multiplexer):负责监听多
- 2024-09-07关于CPP——Muduo库的使用
目录 一、Moduo库是什么1.1Moduo库概念1.2Reactor模式 1.3Moduo库的原理二、Muduo库常见接口2.1 TcpServer类2.2 EventLoop类2.3 TcpConnection类 2.4 TcpClient类2.5 Buffer类 2.6 CountDownLatch类2.7 EventLoopThread类1.防止主线程阻
- 2024-08-22仿Muduo库实现高并发服务器——Server.hpp框架的简单描述
EventLoop模块在本项目中的简单使用: 下面这张图是channel模块,poller模块,TimerWheel模块,EventLoop模块,LoopThreadPool模块进行组合。便于大家对这个项目的理解,因为代码看起来挺复杂的。下面这个图,加入了Connection模块,Buffer模块,socket模块,Acceptor模块,Tcpser
- 2024-08-02Netty的源码分析和业务场景
Netty是一个高性能、异步事件驱动的网络应用框架,它基于JavaNIO构建,广泛应用于互联网、大数据、游戏开发、通信行业等多个领域。以下是对Netty的源码分析、业务场景的详细介绍:源码概述Netty的核心组件:Netty的架构设计围绕着事件驱动的核心思想,主要包括Channel、EventLo
- 2024-07-25netty入门-3 EventLoop和EventLoopGroup,简单的服务器实现
文章目录EventLoop和EventLoopGroup服务器与客户端基本使用增加非NIO工人NioEventLoop处理普通任务与定时任务结语EventLoop和EventLoopGroup二者大概是什么这里不再赘述,前一篇已简述过。不理解也没关系。下面会简单使用,看了就能明白是什么这篇文章只说NioEvent
- 2024-06-1617.EventLoop-IO任务
服务端代码packagecom.xkj.learn;importio.netty.bootstrap.ServerBootstrap;importio.netty.buffer.ByteBuf;importio.netty.channel.ChannelHandlerContext;importio.netty.channel.ChannelInboundHandlerAdapter;importio.netty.channel.ChannelInitializer;
- 2024-06-06详解 Muduo 网络服务和日志模块
这篇文章主要目的是介绍muduo的网络服务模块和日志模块。muduo网络服务在muduo网络库中,最重要的初始化服务,需要涉及两个核心模块,muduo::net::EventLoop和muduo::net::TcpServer。muduo::net::EventLoop不需要我们去设置,我们需要做的只是给Server指定一个EventLoop对象,并
- 2024-05-31window对象的常见属性、延迟函数、时间循环eventloop
一、window对象JavaScript中的全局对象,代表浏览器窗口或者浏览器标签页。它具有许多属性和方法,以下是其中一些常见的属性:window.document:表示当前窗口或标签页的文档对象,可以用来操作和访问文档的内容。window.navigator:包含有关浏览器的信息,如浏览器的名称、版本、
- 2024-05-26深入netty04-eventloop实现原理和最佳实践
Reactor线程模型Reactor线程模型在网络框架设计中扮演着关键的角色。该模型通过事件分发器将读写事件分发给对应的事件处理者,以提高系统的吞吐量、可扩展性和安全性。常见的Reactor线程模型包括单线程模型、多线程模型和主从多线程模型。单线程模型:在单线程模型中,所有I
- 2024-05-24【Muduo】三大核心之Poller、EPollPoller
Poller在Muduo中,Poller负责基于IO多路复用机制进行IO事件监听和处理的组件,作为EPollPoller的基类,为后者提供了与PollPoller统一的IO复用接口,并且声明了一个关键的创建派生类的成员函数:staticPoller*newDefaultPoller(EventLoop*loop);此函数可以通过判断`::getenv("MUD
- 2023-11-16Netty-基础篇
核心组件EventLoopGroup概念:由一个或多个EventLoop组成的组,用于处理所有的Channel的I/O操作,可以将其看作是一个线程池。1.包含多个EventLoop。2.EventLoopGroup将为每个新创建的Channel分配一个EventLoop。在每个Channel的整个生命周期内,所有的操作都将由相同的Thread执行。3
- 2023-10-25EventLoop(事件循环)
EventLoop(事件循环)一、前言JS任务分为同步任务(非耗时任务)和异步任务(耗时任务),异步任务又分为宏任务和微任务。eventloop:JS主线程不断的循环往复的从任务队列中读取任务,执⾏任务,这种运⾏机制称为事件循环(eventloop)二、同步和异步 JS是单线程执行的语言,在同一个时间
- 2023-10-19netty常用类
netty架构图ServerBootstrap、BootstrapServerBootstrap:服务器的引导类,可以绑定服务器和端口,配置Channel、ChannelHandler等。Bootstrap:客户端的引导类。可以开启客户端,连接服务端的端口,配置Channel、ChannelHandler等。EventLoopGroupEventLoopGroup用于处理基于Ch
- 2023-10-02 redis7源码分析:redis 启动流程
1.redis由server.c的main函数启动intmain(intargc,char**argv){...//上面的部分为读取配置和启动命令参数解析,看到这一行下面为启动流程serverLog(LL_WARNING,"oO0OoO0OoO0OoRedisisstartingoO0OoO0OoO0Oo");... //这里对服务进行初始化操作ini
- 2023-08-29【muduo】net篇---EventLoopThread和EventLoopThreadPool
EventLoopThread是事件循环线程,包含一个Thread对象,一个EventLoop对象。在构造函数中,把EventLoopThread::threadFunc注册到Thread对象中(线程启动时会回调)。EventLoopThreadPool是事件循环线程池,管理所有客户端连接,每个线程都有唯一一个事件循环。可以调用setThreadNum设置线程的数
- 2023-08-29【muduo】net篇---EventLoop
EventLoop类调用Poller::poll()进行I/O复用,返回活跃事件列表,然后遍历该列表,依次调用每一个活跃Channel的事件处理函数handleEvent(),最终回调了TcpConnection注册过来的函数。#include<muduo/net/EventLoop.h>#include<muduo/base/Logging.h>#include<muduo/base/Mutex.h>#inc
- 2023-08-27Netty源码学习3——Channel ,ChannelHandler,ChannelPipeline
系列文章目录和关于我零丶引入在Netty源码学习2——NioEventLoop的执行中,我们学习了NioEventLoop是如何进行事件循环以及如何修复NIO空轮询的bug的,但是没有深入了解IO事件在netty中是如何被处理的,下面我们以服务端demo代码为例子,看下和IO事件处理密切的Channel如上在编写nett
- 2023-08-13Netty源码学习1——NioEventLoopGroup的初始化
系列文章目录和关于我零丶引入netty源码学习中,大家maybe都接触到如下的helloworld——netty客户端启动的demo:映入眼帘的第一个类就是NioEventLoopGroup,很多文章上来就是是Netty中的核心类,啥Channel,Pipeline,Context,Boostrap一通劈里啪啦,我看起来比较费劲。so本文不会上来就给
- 2023-06-15【Netty】「萌新入门」(二)剖析 EventLoop
前言本篇博文是《从0到1学习Netty》中入门系列的第二篇博文,主要内容是介绍Netty中EventLoop的使用,优化及源码解析,往期系列文章请访问博主的Netty专栏,博文中的所有代码全部收集在博主的GitHub仓库中;概述事件循环对象EventLoop在Netty中,EventLoop是用于处理I/O事件的
- 2023-06-13事件队列(EventLoop)【宏任务,微任务】
一、概念event:事件loop:循环,循环的是一个又一个的任务队列任务队列:是一个先进先出的数据结构,排在前面的事件,优先被主线程读取任务队列分为:宏队列,微队列,分别存放宏任务和微任务二、宏任务【多个】、微任务【1个】微任务一般比宏任务先执行,并且微任务队列只有一个,宏任务队列可
- 2023-05-29Netty实战(七)
(EventLoop和线程模型)一、什么是线程模型简单地说,线程模型指定了操作系统、编程语言、框架或者应用程序的上下文中的线程管理的关键方面。在早期的Java语言中,我们使用多线程处理的主要方式无非是按需创建和启动新的Thread来执行并发的任务单元,这种在高负载下表现得很原
- 2023-05-26Netty实战(三)
(Netty的组件和设计)一、Channel、EventLoop和ChannelFuture上一篇博文我们在构建服务端和客户端中出现了一些新的类,可能有些同学还有些不了解它们的具体功能。没关系,接下来我们对于Channel、EventLoop和ChannelFuture类进行的讨论增添更多的细节,这些类合在一起,可以被认为
- 2023-04-17js EventLoop事件循环机制
1、js是单线程语言,其事件分为:同步任务和异步任务,异步任务分为宏任务与微任务;2、执行顺序为:同步任务(主流程任务)--->微任务 ---->宏任务先执行同步任务,遇到异步任务则放入任务队列中,等同步任务执行完毕,执行任务队列中的微任务,再执行宏任务...主线程从"任务队列"中读取事件,这
- 2023-03-24eventloop事件循环
事件循环是JS处理异步函数的具体方法具体的做法是:1、执行执行栈中的代码2、遇到一些特殊代码交给浏览器的其他线程处理3、将执行栈中的代码全部执行完毕4、从事件队
- 2023-03-11EventLoop
EventLoop也被称为事件循环,指的是计算机系统的一种运行机制,在 JavaScript运行时中是一个重要机制,它解决了JavaScript单线程的种种问题,会根据不同的任务源通过算法运行不