
epoll
文章平均质量分 86
Linux服务器开发
C/C++Linux后台服务器开发高级架构师内容包括C/C++,Linux,Nginx,ZeroMQ,MySQL,Redis,MongoDB,ZK,流媒体,音视频开发,Linux内核,TCP/IP,协程,DPDK多个高级知识点。
展开
-
对于epoll实现原理的理解
Epoll是Linux IO的多路复用的机制,是select/poll的增强版本,在Linux内核fs/eventpoll.c中可以查看epoll的具体的实现。原创 2022-09-22 14:36:06 · 284 阅读 · 0 评论 -
彻底搞懂 select/poll/epoll,就这篇了!
之前已经把网络 I/O 相关要点都盘了,还剩 select/poll/epoll 这几个区别没说,这篇就来搞搞它们,并且是从完全理解原理的角度来区分它们。本来是要上源码的,但是感觉没啥必要,身为应用开发我觉得理解原理就行了,源码反正看了就忘了,理解才是最重要!所以我就尽量避免代码且用大白话来盘一盘这三个玩意。话不多说,发车。首先,我们知道 select/poll/epoll 是用来实现多路复用的,即一个线程利用它们即可 hold 住多个 socket。按照这个思路,线程不可被任何一个被管理的 Socket原创 2022-06-18 14:18:23 · 6195 阅读 · 0 评论 -
Reactor百万连接的并发
epoll水平触发/边沿触发LT,recvbuff中有数据就一直触发;ET,recvbuff中收到数据,只触发一次。如果recvbuff中数据没有读完,不会再次触发,当recvbuff中收到新的数据时,再次触发。也就是收到一个包,只触发一次。比如客户端发送32byte的包,服务器只recv了10byte的数据,那么epoll不会再次触发,等到下一次客户端再发送32byte的数据,epoll会再一次触发。对于ET,对于recv,最好是一个循环的读,直到读完,返回-1。所以LT适合用于大包,数据没读原创 2022-05-18 15:25:34 · 267 阅读 · 1 评论 -
Epoll底层原理深究
一、epoll底层数据结构在epoll的使用中,我们经常需要对文件描述符集合进行添加、删除等操作,同时对触发的事件类型进行处理,回调IO事件中的工作函数。这其中离不开两个数据结构的帮助------epitem与eventpoll。1.1 eventpoll结构体eventpoll是每一个 epoll所对应的,比如epoll_create()就是创建一个 eventpoll。内核源码文件中eventpoll的定义如下:// file:fs/eventpoll.cstruct event原创 2022-05-13 14:48:29 · 1185 阅读 · 0 评论 -
一文弄懂Linux下五种IO模型
Linux下主要的IO主要分为:阻塞IO(Blocking IO),非阻塞IO(Non-blocking IO),同步IO(Sync IO)和异步IO(Async IO)。 同步:调用端会一直等待服务端响应,直到返回结果。 异步:调用端发起调用之后不会立刻返回,不会等待服务端响应。服务端通过通知机制或者回调函数来通知客户端。 阻塞:服务端返回结果之前,客户端线程会被挂起,此时线程不可被CPU调度,线程暂停运行。 非阻塞:在服务端返回前,函数不会阻塞调用端线程,而会立刻返回。 同步异步的区别在于:服务端在拷贝原创 2022-03-25 15:05:05 · 1286 阅读 · 0 评论 -
让人秒懂的Redis的事件处理机制
redis是单进程,单线程模型,与nginx的多进程不同,与golang的多协程也不同,“工作的工人”那么少,可那么为什么redis能这么快呢?epoll多路复用这里重点要说的就是redis的IO编程模型,首先了解下为什么要有多路复用呢?如果没有多路复用,一个线程只能监听一个端口的一个连接,这样这个效率比较低。当然我们有几种办法可以破除这个,一个是使用多线程模型,我们还是监听一个端口,但是一个请求进来,我们为其创建一个线程。但是这种消耗是比较大的。所以我们一直想办法,有没有办法一个线程监听多原创 2022-03-24 14:50:58 · 473 阅读 · 0 评论 -
浅谈NIO和Epoll实现原理
1 前置知识1.1 socket是什么?就是传输控制层tcp连接通信。1.2 fd是什么? fd既file descriptor-文件描述符。Java中用对象代表输入输出流等...在Linux系统中不是面向对象的,是一切皆文件的,拿文件来代表输入输出流。其实是一个数值,例如1,2,3,4...0是标准输入,1是标准输出,2是错误输出...相关视频讲解:C++后台开发学习视频支撑亿级IO的底层基石 epoll实战揭秘任何进程在操作系统中都有自己IO对应的文件描述符,参考如下:原创 2022-03-17 15:43:06 · 4363 阅读 · 0 评论 -
linux服务器开发人员必须要彻底理解的关于【Linux】IO的线程模型
关于IO模型参考:【Linux】五种IO模型reactor模型应用视频讲解:epoll原理剖析以及reactor模型应用c/c++linux服务器开发高级架构师免费学习视频点击:C/C++Linux服务器开发高级架构师/Linux后台开发架构师一、线程模型介绍 为了应对高并发的服务器端开发,微软在2009年提出了一种更优雅地实现异步编程的方式Reactive Programming即反应式编程。随后其他技术紧随其后,比如ES6通过引入类似的异步编程方式等。 在高性能的I/O设计中,有原创 2021-07-12 20:46:00 · 368 阅读 · 1 评论 -
图解 epoll 是如何工作的及epoll实现原理
本文包含以下内容:epoll是如何工作的本文不包含以下内容:epoll 的用法epoll 的缺陷epoll实现原理由视频讲解:C/C++ Linux服务器开发高级架构学习视频点击:C/C++Linux服务器开发/Linux后台架构师-学习视频教程epoll原理剖析以及reactor模型应用基于linux epoll网络编程细节处理我实在非常喜欢像epoll这样使用方便、原理不深却有大用处的东西,即使它可能已经比较老了select 和 poll 的缺点epoll原创 2021-06-11 15:25:51 · 690 阅读 · 1 评论 -
【epoll】epoll多路复用和Reactor设计思想
目录1、Reactor设计思想文章相关视频讲解:C/C++ Linux服务器开发高级架构学习视频点击:C/C++Linux服务器开发/Linux后台架构师-学习视频epoll原理剖析以及reactor模型应用linux epoll网络编程细节处理小前言:Reactor必要传统OIO模式2.2 Reactor模式2.3 单线程Reactor模式单Reactor多线程模式:2.4 多线程Reactor模式封装Epoll实现并发Reactor模式:.原创 2021-05-20 21:38:43 · 679 阅读 · 0 评论 -
【网络】【操作系统】详解select、poll、epoll
看到这张图你能够完全理解吗。相关视频讲解基于linux epoll网络编程细节处理网路io底层epoll提升服务器底层性能,异步解决方案1.多路复用的意思:多路复用的意思,就是在任何一路 I/O 有“事件”发生的情况下,通知应用程序去处理相应的 I/O 事件,这样我们的程序就变成了“多面手”,在同一时刻仿佛可以处理多个 I/O 事件。2.应用条件:标准输入文件描述符准备好可以读。 监听套接字准备好,新的连接已经建立成功。 已连接套接字准备好可以写。 如果...原创 2021-04-24 15:37:01 · 300 阅读 · 0 评论 -
详解 epoll 原理【Redis,Netty,Nginx实现高性能IO的核心原理】
epoll原理剖析:epoll原理剖析以及reactor模型应用redis源码分析:redis源码分析及driver现实Nginx模块开发:Nginx源码从模块开发入手,3个项目弄透nginx模块开发【Redis,Netty,Nginx 等实现高性能IO的核心原理】I/O输入输出(input/output)的对象可以是文件(file), 网络(socket),进程之间的管道(pipe)。在linux系统中,都用文件描述符(fd)来表示。I/O 多路复用(multiplexin原创 2021-04-14 16:57:40 · 363 阅读 · 0 评论 -
epoll源码分析以及在Redis中的实现
1.概述这篇文章分析一下linux中epoll的实现原理,主要为了增强自己对网络调用的理解。业界使用epoll的框架比较多,随便就能列出来很多,比如jdk的nio在linux下的实现,以及netty、redis等涉及到长链接网络请求的地方,我们都可以直接使用epoll。文末会从redis源码简单看看如何使用epoll做IO多路复用实现高并发。2.具体实现参考官方文档描述:The central concept of the epoll API is the epoll instance,原创 2021-03-18 17:40:44 · 229 阅读 · 0 评论 -
图文详解Linux的IO模型和相关技术
阻塞IO模型(Blocking I/O)Linux内核一开始提供了read与write阻塞式操作。当客户端连接时,会在对应进程的文件描述符目录(/proc/进程号/fd)生成对应的文件描述符(0 标准输入;1 标准输出;2 标准错误输出;),比如 fd 8 , fd 9; 应用程序需要读取的时候,通过系统调用read (fd8)读取,如果数据还没到来,此应用程序的进程或线程会阻塞等待。man 2 read概述 #include <unistd.h&g...原创 2021-03-09 16:21:50 · 196 阅读 · 0 评论 -
基于linux epoll网络编程细节处理丨epoll原理剖析
epoll原理剖析以及三握四挥的处理1.epoll原理详解2.连接的创建与断开3.epoll如何连接细节问题视频讲解如下,点击观看:基于linux epoll网络编程细节处理丨epoll原理剖析C/C++Linux服务器开发精彩内容包括:C/C++,Linux,Nginx,ZeroMQ,MySQL,Redis,MongoDB,ZK,流媒体,P2P,Linux内核,Docker,TCP/IP,协程,DPDK多个高级知识点分享。点击链接订阅后直接观看:C/C++Linux服务...原创 2021-03-06 15:02:18 · 141 阅读 · 1 评论 -
作为C++后端开发程序员,应该彻底理解Epoll实现原理
这篇文章读不懂的没关系,可以先收藏一下。当然,这些核心思想,也会在之后的文章中慢慢做详细讲解,欢迎关注。文章如果实在是没有看懂,可以回头来看看这个视频讲解:epoll原理剖析epoll是Linux平台下的一种特有的多路复用IO实现方式,与传统的select相比,epoll在性能上有很大的提升。本文主要讲解epoll的实现原理,而对于epoll的使用可以参考相关的书籍或文章。epoll 的创建要使用epoll首先需要调用epoll_create()函数创建一个ep...原创 2021-02-26 15:42:57 · 732 阅读 · 0 评论 -
epoll原理剖析以及reactor模型应用
epoll原理剖析以及reactor模型应用1. epoll原理剖析2. 单reactor原理以及应用3. 多reactor原理以及应用视频讲解如下,点击观看:epoll原理剖析以及reactor模型应用丨零声学院官方推广视频分享C/C++Linux服务器开发精彩内容包括:C/C++,Linux,Nginx,ZeroMQ,MySQL,Redis,MongoDB,ZK,流媒体,P2P,Linux内核,Docker,TCP/IP,协程,DPDK多个高级知识点分享。点击链接订阅后直接..原创 2021-02-19 16:07:34 · 278 阅读 · 0 评论 -
高并发的epoll+线程池,线程池专注实现业务
分享几个在bilibili听了觉得讲的还不错的几个视频:1.手写线程池视频:https://www.bilibili.com/video/BV1AT4y137912.epoll原理讲解视频:https://www.bilibili.com/video/BV1Xr4y1c7aV3.手写用户态协议栈视频:https://www.bilibili.com/video/BV1x54y1t7so我们知道,服务器并发模型通常可分为单线程和多线程模型,这里的线程通常是指“I/O线程”,即负责I/O操作,协原创 2021-01-13 21:44:54 · 800 阅读 · 1 评论 -
Linux多线程网络编程要义丨epoll与reactor原理
linux多线程网络编程要义1.epoll原理剖析2.单reactor原理以及应用3.多reactor原理以及应用【Linux服务器系列】Linux多线程网络编程要义丨epoll与reactor原理更多精彩内容包括:C/C++,Linux,Nginx,ZeroMQ,MySQL,Redis,MongoDB,ZK,流媒体,P2P,Linux内核,Docker,TCP/IP,协程,DPDK多个高级知识点分享。视频链接点击:https://ke.qq.com/course/417774?...原创 2021-01-13 14:22:58 · 302 阅读 · 1 评论