首先附上B站关于epoll原理讲解视频连接:https://www.bilibili.com/video/BV1qJ411w7du?from=search&seid=14769141451481133639

1、epoll_create函数

函数声明:int epoll_create(int size) 
该 函数生成一个epoll专用的文件描述符。它其实是在内核申请一空间,用来存放你想关注的socket fd上是否发生以及发生了什么事件。size就是你在这个epoll fd上能关注的最大socket fd数。

2、epoll_ctl函数

函数声明:int epoll_ctl(int epfd, int op, int fd, struct epoll_event *event) 
该函数用于控制某个epoll文件描述符上的事件,可以注册事件,修改事件,删除事件。 
参数: 
epfd:由 epoll_create 生成的epoll专用的文件描述符; 
op:要进行的操作例如注册事件,可能的取值EPOLL_CTL_ADD 注册、EPOLL_CTL_MOD 修 改、EPOLL_CTL_DEL 删除

fd:关联的文件描述符; 
event:指向epoll_event的指针; 
如果调用成功返回0,不成功返回-1

3、epoll_wait函数

函数声明:int epoll_wait(int epfd,struct epoll_event * events,int maxevents,int timeout) 
该函数用于轮询I/O事件的发生; 
参数: 
epfd:由epoll_create 生成的epoll专用的文件描述符; 
epoll_event:用于回传代处理事件的数组; 
maxevents:每次能处理的事件数; 
timeout:等待I/O事件发生的超时值(单位我也不太清楚);-1相当于阻塞,0相当于非阻塞。一般用-1即可 
返回发生事件数。

epoll的工作方式

epoll的两种工作方式:1.水平触发(LT)2.边缘触发(ET) 
LT模式:若就绪的事件一次没有处理完要做的事件,就会一直去处理。即就会将没有处理完的事件继续放回到就绪队列之中(即那个内核中的链表),一直进行处理。 
ET模式:就绪的事件只能处理一次,若没有处理完会在下次的其它事件就绪时再进行处理。而若以后再也没有就绪的事件,那么剩余的那部分数据也会随之而丢失。 
由此可见:ET模式的效率比LT模式的效率要高很多。只是如果使用ET模式,就要保证每次进行数据处理时,要将其处理完,不能造成数据丢失,这样对编写代码的人要求就比较高。 
注意:ET模式只支持非阻塞的读写:为了保证数据的完整性。

epoll用到的epoll_create,epoll_ctl, epoll_wait三个函数,以及epoll的工作模式相关推荐

  1. epoll详解【epoll_create】【epoll_ctl】【epoll_wait】

    文章目录 0 - 前言 1 - epoll接口 epoll_create epoll_ctl epoll_wait 0 - 前言 参考:epoll机制:epoll_create.epoll_ctl.e ...

  2. epoll监听文件_介绍一下 Android Handler 中的 epoll 机制?

    介绍一下 Android Handler 中的 epoll 机制? 目录: IO 多路复用 select.poll.epoll 对比 epoll API epoll 使用示例 Handler 中的 e ...

  3. C语言 epoll 工作模式之lt 等级触发 level trigger

    友链 // epoll的工作模式 // lt level trigger 水平触发模式 // et edge trigger 边缘触发 // lt模式是默认的 // et是高速工作方式 // 前者会一 ...

  4. epoll的ET工作模式和LT工作模式

    1.epoll的两种工作模式介绍 epoll的两种模式ET和LT: LT模式(水平触发):是缺省的工作方式,并且同时支持block和non-block socket.在这种做法中,内核告诉你一个文件描 ...

  5. epoll nio区别_高性能网络服务器编程:为什么linux下epoll是最好,Netty要比NIO.2好?...

    基本的IO编程过程(包括网络IO和文件IO)是,打开文件描述符(windows是handler,java是stream或channel),多路捕获(Multiplexe,即select和poll和ep ...

  6. EPOLL的工作模式 ET and LT

    近日又继续学习了一下EPOLL的工作模式,这会基本上搞清楚了,因而撰写了此篇文档进行描述.先来一段网上的介绍文档: EPOLL事件分发系统可以运转在两种模式下:Edge Triggered (ET). ...

  7. C语言 epoll 工作模式之et 边缘触发 edge trigger

    友链 占位占位占位占位占位占位占位占位占位占位占位占位占位占位占位占位占位占位占位 占位占位占位占位占位占位占位占位占位占位占位占位占位占位占位占位占位占位占位 占位占位占位占位占位占位占位占位占位占 ...

  8. 12.MySql关于获取当前时间的三个函数

    这三个函数都是获取当前时间的,获取的详细格式如下图所示,可以根据需要来选用. 转载于:https://www.cnblogs.com/Nick-Hu/p/7566805.html

  9. ACMNO.37 C语言-数字交换 输入10个整数,将其中最小的数与第一个数对换,然后把最大的数与最后一个数对换。写三个函数; ①输入10个数;②进行处理;③输出10个数。

    题目描述 输入10个整数,将其中最小的数与第一个数对换,然后把最大的数与最后一个数对换. 写三个函数: ①输入10个数:②进行处理:③输出10个数. 输入 10个整数 输出 整理后的十个数,每个数后跟 ...

最新文章

  1. 服务器群装系统,手把手教你安装及配置服务器集群系统
  2. 在IT技术圈混,怎么能不知道这几个公众号
  3. 为什么我们喜欢用 sigmoid 这类 S 型非线性变换?
  4. python批量处理jira上的issue
  5. 浅析SAX,DOM,JAXP,JDOM与DOM4J之间的关系
  6. Windows下基于python3使用word2vec训练中文维基百科语料资料汇总
  7. 2018年全国《程序员高考》真题试卷
  8. Ajax Loading进度gif在线生成
  9. 浏览器对同一IP的最大并发请求数记录
  10. ES6新特性_ES6对象添加Symbol类型属性---JavaScript_ECMAScript_ES6-ES11新特性工作笔记016
  11. Python3.7.2版本出现ModuleNotFoundError: No module named 'paramiko'解决办法
  12. 10. 了解分配子(allocateor)的约定和限制
  13. python github库_让pip使用git和github存储库
  14. .net学科-杨中科-Unity3D视频教程
  15. 中小企业采用云计算的三大障碍
  16. win8 配置要求
  17. 工程力学(14)—弯曲内力
  18. openEuler基础(二十)用户创建、密码管理、用户锁定
  19. Microsoft Word 实用功能
  20. OPENXML的用法

热门文章

  1. 跨境电商运营-客服对绩效的重要性
  2. LIO-PPF:通过增量平面预拟合和跟踪的快速激光雷达惯导里程计
  3. 计算机操作系统的目标和作用
  4. JVM内存模型及常见问题
  5. c语言下利用p99:模拟实现try-cath-finally
  6. 星智综合个性设计系统 v2007 1.0 官网
  7. hdu 5063 操作逆推+mul每次要*2%(modo - 1)
  8. [Matlab]未能加载文件或程序集“xx”或它的某一个依赖项。生成此程序集的运行时比当前加载的运行时新,无法加载此程序集。 Source: mscorlib HelpLink
  9. 如何使谷歌浏览器打开书签时新开标签页?
  10. python决策树export_机器学习--决策树--dot转存pdf