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 深入剖析

    epoll LT ET 深入剖析 EPOLL事件有两种模型 xff1a Level Triggered LT 水平触发 socket接收缓冲区不为空 有数据可读 读事件一直触发 socket发送缓冲区不满 可以继续写入数据 写事件一直触发
  • 【Linux学习】epoll详解

    什么是 epoll epoll 是什么 xff1f 按照 man 手册的说法 xff1a 是为处理大批量句柄而作了改进的 poll 当然 xff0c 这不是 2 6 内核才有的 xff0c 它是在 2 5 44 内核中被引进的 epoll
  • c语言用epoll实现ftp服务器

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

    select poll epoll都是IO多路复用机制 xff0c 都可实现同时监听多个I O事件的状态 xff0c 多路复用就是通过一种机制监视多个描述符 xff0c 一旦某个描述符读或者写就绪就能通知代码进行读写操作 本质他们都是同步I
  • netty使用epoll报错:java.lang.UnsatisfiedLinkError: failed to load the required native library

    Caused by java lang UnsatisfiedLinkError could not load a native library netty transport native epoll x86 64 最近修改moquett
  • Linux下各种锁的理解和使用及总结解决epoll惊群问题(面试常考)

    一 锁 锁出现的原因 临界资源是什么 多线程执行流所共享的资源 锁的作用是什么 可以做原子操作 在多线程中针对临界资源的互斥访问 保证一个时刻只有一个线程可以持有锁对于临界资源做修改操作 任何一个线程如果需要修改 xff0c 向临界资源做写
  • Linux-epoll机制

    主要接口 epoll create epoll ctl epoll wait epoll create 头文件 include
  • epoll用法详解与编程实例

    1 epoll使用的三个函数 使用epoll时会用到三个函数 因此把这个三个函数弄明白了 也就明白了epoll的用法 要明白这个三个函数 最重要的就是要明白函数的参数 明白需要什么样的参数以及每一个参数的含义 1 1 epoll creat
  • Nginx构建反向代理缓存服务器

    防伪码 曾经沧海难为水 除却巫山不是云 代理服务可简单的分为正向代理和反向代理 正向代理 用于代理内部网络对Internet的连接请求 如 NAT 客户端指定代理服务器 并将本来要直接发送给目标Web服务器的HTTP请求先发送到代理服务器上
  • JS逆向:Webpack打包后的代码怎么搞?猿人学爬虫比赛第十六题详细题解

    实战地址 http match yuanrenxue com match 16 抓包分析 地址栏输入 地址 按下F12并回车 发现数据在这里 查看cookie 无加密相关的字段 请求的接口倒是有个m的加密参数 看来这题的主要目的就是 看看m
  • Libevent库的介绍与应用

    Libevent库 Libevent概述 Libevent使用模型 Libevent库使用示例 Libevent事件类型和框架结构 使用Libevent完成tcp服务端 Libevent概述 Libevent是开源社区的一款高性能的I O框
  • 基于升序链表的定时器及其简单应用

    Linux网络编程笔记 定时器 基于升序链表的定时器 这其实就是一个结点为 class util timer public util timer prev NULL next NULL 构造函数 public time t expire 任
  • 基于epoll实现简单的web服务器

    1 简介 epoll 是 Linux 平台下特有的一种 I O 复用模型实现 于 2002 年在 Linux kernel 2 5 44 中被引入 在 epoll 之前 Unix Linux 平台下的 I O 复用模型包含 select 和
  • Nginx 安装与部署配置以及Nginx和uWSGI开机自启

    下载 官方网站 https nginx org en download html Windows下安装 安装 下载后解压 切记不能含有中文路径 文件结构如图 我解压的路径就有中文 记得拷贝放置于英文目录下即可 启动 两种方法 1 直接双击该
  • 使用 epoll 进行非阻塞 tcp 连接

    我的 Linux 应用程序正在执行非阻塞 TCP 连接系统调用 然后使用epoll wait检测三向握手完成 有时epoll wait两者都返回POLLOUT POLLERR为同一套接字描述符设置的事件 我想了解 TCP 级别发生了什么 我
  • 具有边缘触发事件的 epoll

    的手册页epoll有一个边缘触发的示例代码 如下所示 for nfds epoll wait epollfd events MAX EVENTS 1 if nfds 1 perror epoll pwait exit EXIT FAILUR
  • 使用 asyncio 时无法使用 os.fork() 将多个进程绑定到一个套接字服务器

    我们都知道 使用 asyncio 可以显着提高套接字服务器的性能 如果我们能够利用 cpu 中的所有核心 可能通过多处理模块或os fork etc 我现在正在尝试构建一个多核套接字服务器演示 其中一个异步套接字服务器侦听每个核心并全部绑定
  • epoll_wait 中的 epoll 事件顺序

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

    我的多线程网络服务器程序有问题 我有一个正在侦听新客户端连接的主线程 我使用 Linux epoll 来获取 I O 事件通知 对于每个传入事件 我创建一个线程来接受新连接并为其分配一个 fd 在重负载下 可能会发生同一个 fd 被分配两次
  • 为什么在 epoll 中推荐使用非阻塞套接字

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

随机推荐

  • 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会一直通知用