返回顶部
首页 > 资讯 > 操作系统 >Linux IO的水平触发和边缘触发的区别
  • 436
分享到

Linux IO的水平触发和边缘触发的区别

边缘区别水平 2022-06-04 21:06:29 436人浏览 薄情痞子
摘要

Linux IO的水平触发和边缘触发的区别 在linux的io多路复用中有水平触发,边缘触发两种模式,这两种模式的区别如下: 水平触发:如果文件描述符已经就绪可以非阻塞的执行IO操作了,

Linux IO的水平触发和边缘触发的区别

linuxio多路复用中有水平触发,边缘触发两种模式,这两种模式的区别如下:

水平触发:如果文件描述符已经就绪可以非阻塞的执行IO操作了,此时会触发通知.允许在任意时刻重复检测IO的状态.select,poll就属于水平触发.

边缘触发:如果文件描述符自上次状态改变后有新的IO活动到来,此时会触发通知.在收到一个IO事件通知后要尽可能多的执行IO操作,因为如果在一次通知中没有执行完IO那么就需要等到下一次新的IO活动到来才能获取到就绪的描述符.信号驱动式IO就属于边缘触发.

写过单片机的人可以从另一方理解水平触发和边缘触发的区别:

水平触发:就是只有高电平(1)或低电平(0)时才触发通知,只要在这两种状态就能得到通知.上面提到的只要有数据可读(描述符就绪)那么水平触发的epoll就立即返回.

边缘触发:只有电平发生变化(高电平到低电平,或者低电平到高电平)的时候才触发通知.上面提到即使有数据可读,但是io状态没有变化epoll也不会立即返回.

epoll既可以采用水平触发,也可以采用边缘触发.

大家可能还不能完全了解这两种模式的区别,我们可以举例说明:一个管道收到了1kb的数据,epoll会立即返回,此时读了512字节数据,然后再次调用epoll.这时如果是水平触发的,epoll会立即返回,因为有数据准备好了.如果是边缘触发的不会立即返回,因为此时虽然有数据可读但是已经触发了一次通知,在这次通知到现在还没有新的数据到来,直到有新的数据到来epoll才会返回,此时老的数据和新的数据都可以读取到(当然是需要这次你尽可能的多读取).所以当我们写epoll网络模型时,如果我们用水平触发不用担心数据有没有读完因为下次epoll返回时,没有读完的Socket依然会被返回,但是要注意这种模式下的写事件,因为是水平触发,每次socket可写时epoll都会返回,当我们写的数据包过大时,一次写不完,要多次才能写完或者每次socket写都写一个很小的数据包时,每次写都会被epoll检测到,因此长期关注socket写事件会无故cpu消耗过大甚至导致cpu跑满,所以在水平触发模式下我们一般不关注socket可写事件而是通过调用socket write或者send api函数来写socket,说到这我们可以看到这种模式在效率上是没有边缘触发高的,因为每个socket读或者写可能被返回两次甚至多次,所以有时候我们也会用到边缘触发但是这种模式下在读数据的时候一定要注意,因为如果一次可写事件我们没有把数据读完,如果没有读完,在socket没有新的数据可读时epoll就不回返回了,只有在新的数据到来时,我们才能读取到上次没有读完的数据。

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

--结束END--

本文标题: Linux IO的水平触发和边缘触发的区别

本文链接: https://lsjlt.com/news/18715.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Linux IO的水平触发和边缘触发的区别
    Linux IO的水平触发和边缘触发的区别 在linux的IO多路复用中有水平触发,边缘触发两种模式,这两种模式的区别如下: 水平触发:如果文件描述符已经就绪可以非阻塞的执行IO操作了,...
    99+
    2022-06-04
    边缘 区别 水平
  • Linux IO的水平触发和边缘触发有什么区别
    这篇文章将为大家详细讲解有关Linux IO的水平触发和边缘触发有什么区别,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。Linux IO的水平触发和边缘触发的区别    在l...
    99+
    2023-06-09
  • 服务器租用后主从触发器和边沿触发器的区别是什么
    这篇文章将为大家详细讲解有关服务器租用后主从触发器和边沿触发器的区别是什么,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。主从触发器和边沿触发器的区别:1、触发情况不同,主从触发器是下降沿触发,而边沿触发器...
    99+
    2023-06-25
  • linux swap是怎么触发的
    今天小编给大家分享一下linux swap是怎么触发的的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。linux swap指的...
    99+
    2023-06-29
  • mysql存储过程和触发器有啥具体区别
    本文主要给大家简单讲讲mysql存储过程和触发器有啥具体区别,相关专业术语大家可以上网查查或者找一些相关书籍补充一下,这里就不涉猎了,我们就直奔主题吧,希望mysql存储过程和触发器有啥具体区别这篇文章可以...
    99+
    2024-04-02
  • MySQL 触发器的使用和理解
    1.触发器是什么? 一类特殊的数据库程序,可以监视某种数据的操作(insert/update/delete),并触发相关的操作(insert/update/delete),保护数据的完整性。 个人理解就有...
    99+
    2022-05-17
    MySQL 触发器
  • SQL触发器的功能和语法
    SQL触发器的使用及语法 引言:SQL触发器(Trigger)是一种特殊的存储过程,它会在数据库表发生特定操作时自动被触发执行。通过触发器,可以实现对表数据更新、插入和删除操作的自动化...
    99+
    2024-02-22
  • 数据库中存储过程和触发器有哪些区别
    这篇文章主要讲解了“数据库中存储过程和触发器有哪些区别”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“数据库中存储过程和触发器有哪些区别”吧!什么是触发器?触...
    99+
    2024-04-02
  • MySQL的函数和触发器的使用
    前言MySQL是一种关系型数据库管理系统,关系数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。MySQL所使用的 SQL 语言是用于访问数据库的最常用标准化语...
    99+
    2024-04-02
  • Android  onSaveInstanceState和onRestoreInstanceState触发的时机
    Android  onSaveInstanceState和onRestoreInstanceState触发的时机先看Application Fundamentals上的一段话:  Android calls o...
    99+
    2023-05-31
    onsaveinstancestate onrestoreinstancestate bs
  • MySQL数据库的触发器和事务
    目录一、触发器概念二、 触发器的操作触发器的增删改操作触发器的查看删除操作三、事务概念四、事务的操作基本流程基础操作事务的提交方式事务的隔离级别隔离操作一、触发器 概念 触发器是SQ...
    99+
    2022-11-13
    MySQL数据库触发器 MySQL数据库事务
  • Oracle触发器和游标的示例分析
    小编给大家分享一下Oracle触发器和游标的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!触发器:1、 创建一个用于记录用户操作的触发器  创建一个dep...
    99+
    2023-06-20
  • MySQL中的触发器和事件的使用方法
    MySQL是一种常用的关系型数据库管理系统,其强大的功能和灵活的使用方式使得它成为了众多开发者和企业的首选。在MySQL中,触发器和事件是两个重要的概念,它们能够实现诸如数据监控、数据完整性保护、数据同步等功能。本文将介绍MySQL中触发器...
    99+
    2023-10-22
    MySQL触发器 Mysql事件 触发器使用方法
  • Oracle触发器和程序包的基本介绍
    目录一、触发器的概念1、触发器的基本概念2、触发器的分类二、触发器的创建1、DML触发器的创建3、系统触发器4、触发器的禁用和启用5、触发器的查看和删除三、程序包1、程序包的创建2、程序包的删除四、总结一、触发器的概念 ...
    99+
    2022-07-05
    Oracle触发器 Oracle程序包
  • MySQL触发器的使用和优缺点介绍
    目录前言1. 触发器概述2. 触发器的创建2.1 创建触发器语法2.2 代码举例3. 查看、删除触发器3.1 查看触发器3.2 删除触发器4. 触发器的优缺点4.1 优点4.2 缺点...
    99+
    2024-04-02
  • MySQL中触发器和游标的介绍与使用
    触发器简介 触发器是和表关联的特殊的存储过程,可以在插入,删除或修改表中的数据时触发执行,比数据库本身标准的功能有更精细和更复杂的数据控制能力。 触发器的优点: 安全性:可以...
    99+
    2024-04-02
  • 怎么理解数据库触发器中的NEW和OLD
    这篇文章主要讲解了“怎么理解数据库触发器中的NEW和OLD”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么理解数据库触发器中的NEW和OLD”吧!我创建了...
    99+
    2024-04-02
  • 如何分析MySQL基础中的触发器和事件
    本篇文章给大家分享的是有关如何分析MySQL基础中的触发器和事件,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。触发器我们使用MySQL的过程中...
    99+
    2024-04-02
  • springboot和ssm开发的区别
    springboot和ssm开发的区别1. Springboot是什么.谈springboot之前,咱们要先说一下传统的SSM开发,使用过SSM开发的人都会发现,传统的SSM框架项目会有大量的配置文件,需要手动的区整合三个框架,也...
    99+
    2023-06-02
  • golang 游戏开发和web开发的区别
    在游戏开发中,go语言强调并发性,而web开发注重处理并发的http请求。此外,游戏开发需要手动内存管理以避免帧丢失或卡顿,而web开发可以使用垃圾回收器。 Go 语言在游戏开发和 W...
    99+
    2024-04-21
    css golang 网络编程 垃圾回收器 标准库
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作