Epoll的两种工作模式

2023-05-16

Epoll的两种工作模式

LT模式(水平触发)

假设委托内核检测读事件-检测fd的读缓冲区
都缓冲区有数据-epoll检测到了会给用户通知

  • 用户不读数据,数据一直在缓冲区,epoll会一直通知
  • 用户只读了一部分数据,epoll会通知
  • 缓冲区的数据读完了,不通知

LT模式是默认的工作模式,同时支持阻塞和非阻塞套接字两种模式。
内核告诉你一个文件描述符是否就绪,然后你可以对这个就虚的fd进行IO操作,如果你不做任何操作的话,内核还是会继续通知你。(只要是缓冲区内有数据,内核就通知)。

ET模式(边沿触发)

假设委托内核检测读事件-检测fd的读缓冲区
都缓冲区有数据-epoll检测到了会给用户通知

  • 用户不读数据,数据一直在缓冲区,epoll不通知
  • 用户只读了一部分数据,epoll不通知
  • 缓冲区的数据读完了,不通知

只支持非阻塞套接字。当描述符变为就绪时,内核会通过EPOLL告诉你。然后他会假设你知道文件描述符已经就绪,并且不会再为那个文件描述符发送更多的就绪通知。除非文件描述符又重回非就绪态。

如何设置ET模式

struct epoll_event{
    __uint32_t events;
    epoll_data_t data;
}
/* 
	常见的EPOLL检测事件
	- EPOLLIN
	- EPOLLOUT
	- EPOLLERR
	- EPOLLET
*/

可能出现的错误:
EINTR:被某进程中断。
EAGAIN:fd被标志位非阻塞,数据以读完如果再读的话,会返回EAGAIN。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Epoll的两种工作模式 的相关文章

  • epoll的LT模式(水平触发)和ET模式(边沿触发)

    文章目录 前言名称的记忆状态变化LT模式ET模式数据的读取和发送代码实践基础代码测试分类怎么解决ET触发了一次就不再触发了 总结 前言 epoll的触发模式是个引发讨论非常多的话题 xff0c 网络上这方面总结的文章也很多 xff0c 首先
  • c语言用epoll实现ftp服务器

    epoll简介 xff1a https www cnblogs com Anker archive 2013 08 17 3263780 html 以下是我根据上面这篇epoll例子改写的实现ftp服务器代码 xff1a server c
  • Linux epoll详解

    Linux epoll详解 一 什么是epoll epoll是什么 xff1f 按照man手册的说法 xff1a 是为处理大批量句柄而作了改进的poll 当然 xff0c 这不是2 6内核才有的 xff0c 它是在2 5 44内核中被引进的
  • 网络编程13——epoll事件模型:ET和LT模、掌握实现epoll的ET模式(非阻塞模式

    epoll是linux下多路复用IO select poll 的增强版本 它能显著提高程序在大量并发连接中只有少量活跃的情况下的系统CPU利用率 因为它会复用文件描述符集合来传递结果为不用迫使开发者每次等待事件之前都必须重新准备要被侦听的文
  • epoll高效的本质

    epoll高效的本质在于 减少了用户态和内核态的文件句柄拷贝 减少了对可读可写文件句柄的遍历 mmap 加速了内核与用户空间的信息传递 epoll是通过内核与用户mmap同一块内存 避免了无谓的内存拷贝 IO性能不会随着监听的文件描述的数量
  • close_on_exec选项:FD_CLOEXEC(fcntl)、O_CLOEXEC(open) 和 EPOLL_CLOEXEC(epoll_createl)

    close on exec解决的问题类型 我们经常会碰到一个进程需要fork出子进程的情况 而且子进程很可能会继续exec新的程序 这就不得不提到如何妥善处理好子进程中无用文件描述符的问题 fork函数的使用本不是这里讨论的话题 但必须提一
  • epoll用法详解与编程实例

    1 epoll使用的三个函数 使用epoll时会用到三个函数 因此把这个三个函数弄明白了 也就明白了epoll的用法 要明白这个三个函数 最重要的就是要明白函数的参数 明白需要什么样的参数以及每一个参数的含义 1 1 epoll creat
  • PyWebIo

    Part1什么是 PyWebIo PyWebIO 提供了一系列命令式的交互函数来在浏览器上获取用户输入和进行输出 将浏览器变成了一个 富文本终端 可以用于构建简单的 Web 应用或基于浏览器的 GUI 应用 使用 PyWebIO 开发者能像
  • FastApi-21-APIRouter

    Part1背景 通常在我们开发 app 时都会用到路由 像 Flask 有 blueprint Django 有 urls 等 其目的都是为了路由汇总管理 FastApi 也不例外 其拥有 APIRouter 今天我们就一起来了解 APIR
  • C/C++实现协程及原理(详细完整版)-架构师篇

    一 协程 Coroutine 简介 协程 又称微线程 纤程 英文名Coroutine 协程的概念很早就提出来了 但直到最近几年才在某些语言 如Lua 中得到广泛应用 子程序 或者称为函数 在所有语言中都是层级调用 比如A调用B B在执行过程
  • 基于epoll实现简单的web服务器

    1 简介 epoll 是 Linux 平台下特有的一种 I O 复用模型实现 于 2002 年在 Linux kernel 2 5 44 中被引入 在 epoll 之前 Unix Linux 平台下的 I O 复用模型包含 select 和
  • 再谈Linux epoll惊群问题的原因和解决方案

    差别是什么 差别只是西装 缘起 近期排查了一个问题 epoll惊群的问题 起初我并不认为这是惊群导致 因为从现象上看 只是体现了CPU不均衡 一共fork了20个Server进程 在请求负载中等的时候 有三四个Server进程呈现出比较高的
  • 十四、使用Selector(多路复用器)实现Netty中Reactor单线程模型

    导论 前面几篇文章我们分别从 一 C10K问题经典问答 二 java nio ByteBuffer用法小结 三 Channel 通道 四 Selector选择器 五 Centos Linux安装nc 六 windows环境下netcat的安
  • epoll 是否保留 fd 的注册顺序?

    我正在研究 Linux 系统调用 我发现了一些方面epoll 我不清楚 说 我创建一个epoll实例 epollfd epoll create 50 接下来 我在中注册 50 个文件描述符for loop for i 0 i lt 50 i
  • 边缘触发的 epoll 和 oneshot 只报告一次

    我目前正在添加从创建的 sockfdsaccept到具有以下事件的 epoll 实例 const int EVENTS EPOLLET EPOLLIN EPOLLRDHUP EPOLLONESHOT EPOLLERR EPOLLHUP 一旦
  • epoll_wait 中的 epoll 事件顺序

    我已将一个程序从 select 移植到 epoll 以增加我们可以处理的套接字数量 我已经将socket添加到epoll FD中并且可以愉快地读写了 但是 即使我使用级别触发事件 我也担心套接字可能会饥饿 我担心的情况是 准备好的套接字数量
  • unixaccept()函数两次返回相同的文件描述符

    我的多线程网络服务器程序有问题 我有一个正在侦听新客户端连接的主线程 我使用 Linux epoll 来获取 I O 事件通知 对于每个传入事件 我创建一个线程来接受新连接并为其分配一个 fd 在重负载下 可能会发生同一个 fd 被分配两次
  • 当 fd 关闭时,我会收到 epoll 的通知吗?

    我目前正在构建一些使用的东西epoll 它工作得很好 但是当文件描述符被删除时最好有一个通知epoll当底层的fd关闭了 有没有办法获得通知epoll一旦fd关闭了 不 这是一个Zig https ziglang org 程序来演示 con
  • 为什么在 epoll 中推荐使用非阻塞套接字

    我正在尝试学习如何将 epoll 用于 tcp 服务器应用程序 因为我期望有很多连接 我尝试检查示例和教程 他们总是建议使用 设置在 epoll 中添加的套接字为非阻塞套接字 为什么 对于级别触发的 epoll 非阻塞套接字可以帮助最大限度
  • epoll 与 select 对于极少量的连接

    我一直使用 select 来处理连接 最近我们的套接字库发生了变化 select 被 Linux 平台的 epoll 取代 我的应用程序架构是这样的 我只建立一个或最多 2 个套接字连接 并在单个线程中对它们进行 epoll select

随机推荐

  • C.Garland(DP)

    题目链接 xff1a C Garland 题意 给你了一个序列 xff0c 包含n个数 xff0c 这个序列是由1 n数字构成 xff0c 但是题目给你的这个序列并不完整 xff0c 让你去补完整 xff0c 那些输入的值为0的位置的就是让
  • P1908 逆序对(离散化)

    洛谷P1908 逆序对 逆序对就不用解释了 xff0c 题上也说的很清楚 那我分别用归并排序和树状数组来解决一下这道题目 归并排序 我们都知道 xff0c 归并排序是通过把大区间一直分 xff0c 分成小区间 xff0c 然后小区间排序好了
  • Codeforces Round #618 (Div. 2)

    太菜了 xff0c 也只能补补题了 A Non zero 这道题瞎弄一下就过了 xff0c 数0的个数 xff0c 把0全变成1 xff0c 然后再判断现在和是不是0 xff0c 和是0的话就再加上1 span class token ma
  • HDU 1025最长递增子序列(二分法)

    最长递增子序列 xff08 二分 xff09 HDU1025 https www felix021 com blog read php 1587 找最长递增子序列 xff0c 以前一般用DP的方法找 xff0c 因为理解简单 xff0c 实
  • Codeforces Round #658 (Div. 2)

    比赛链接 xff1a https codeforces com contest 1382 A Common Subsequence 题意 给你两组数 xff0c 问你有没有相同 的书 xff0c 有的话 xff0c 输出最短的那组 xff0
  • mysql学习笔记之数据库

    我的mysql学习参考于github文章 数据库 xff1a 高效的存储和处理数据的介质 xff08 比如磁盘和内存 xff09 xff0c 又根据介质的不同 xff0c 分为关系数据库和非关系数据 关系数据库特点 xff1a 1 xff0
  • Python_pytorch (三)分解网络模型

    python pytorch 小土堆pytotch学习视频链接 from的是一个个的包 xff08 package import 的是一个个的py文件 file py 所使用的一般是文件中的类 class 第一步实例化所使用的类 然后调用类
  • Python_pytorch(四)网络搭建

    搭建架构 span class token keyword import span torch span class token keyword import span torchvision span class token keywor
  • Python_pytorch(五)模型训练

    反向传播 Loss Function span class token keyword import span torchvision span class token keyword from span torch span class
  • 【计蒜客】泥塑课C++

    泥塑课 描述 小米是一个幼儿园老师 xff0c 每学期的泥塑课上 xff0c 她都会给每个学生发不超过 250 立方厘米的等量橡皮泥 xff0c 教大家做泥塑 在上课过程中 xff0c 她发现每个班都恰好有一个小朋友会去抢另一个小朋友的橡皮
  • linux无法粘贴文件

    无粘贴功能的主要原因是无权限复制 xff0c 所以解决方案是 xff1a 打开终端 xff0c 输入 xff1a sudo nautilus 那么就会打开一个有管理员权限的文件夹资源器 xff0c 现在右键就有粘贴功能了
  • Zookeeper详解(三)——开源客户端curator

    开源客户端curator true re de curator是Netflix公司开源的一个zookeeper客户端 xff0c 后捐献给apache xff0c curator框架在zookeeper原生API接口上进行了包装 xff0c
  • mysql 修改字段类型

    修改字段类型 xff1a span class token keyword alter span span class token keyword table span 表名 span class token keyword modify
  • 【python】字符串(二)

    今天我们来学习如何判断字符串格式的内容 xff0c 针对基础判断 文章目录 一 基础知识二 例题 xff08 一 xff09 找元音 xff08 二 xff09 判断电话号码合法 一 基础知识 我们先来看看一般会用到那些知识点 xff1a
  • CentOS7 个性化

    CentOS美化 前言一 上图看效果原生桌面效果图美化后的效果图 二 使用步骤1 安装相关的包2 调整主题和字体 总结 前言 咳咳咳 xff5e 无论什么系统 xff0c 美化是必不可少的 xff0c 可以没用 xff0c 但不能没有 xf
  • freeswitch 1.10版本 centos7安装

    文章目录 简介安装使用ODBC连接mysql可能出现的问题 简介 FreeSWITCH 是一个电话的软交换解决方案 xff0c 包括一个软电话和软交换机用以提供语音和聊天的产品驱动 FreeSWITCH 可以用作交换机引擎 PBX 多媒体网
  • Airsim_API

    AirSim API 参考自知乎大佬https www zhihu com column multiUAV 讲的非常好 xff01 无人机姿态角 pitch是俯仰角 xff0c 是 点头 yaw是偏航角 xff0c 是 摇头 roll是旋转
  • JWT详解

    JWT详解 什么是JWTJWT能做什么JWT的认证流程JWT认证的优势JWT结构 1 Header 2 Payload 3 Signature Java中使用JWT实际开发中的应用 Springboot 43 Spring Security
  • Java获取天气情况的方式

    说明 经过搜集和参考网上的相关资料 xff0c Java获取天气情况数据的通用步骤如下 xff1a 调用天气接口api xff1b 解析返回的XML 或 JSON数据 xff1b 这里我并不去用代码实现一个Demo xff0c 而是记录一下
  • Epoll的两种工作模式

    Epoll的两种工作模式 LT模式 xff08 水平触发 xff09 假设委托内核检测读事件 检测fd的读缓冲区 都缓冲区有数据 epoll检测到了会给用户通知 用户不读数据 xff0c 数据一直在缓冲区 xff0c epoll会一直通知用