2016 - 2025

感恩一路有你

linux的select函数详解 linux I/O多路复用模型,为什么epoll性能高于select和poll?

浏览量:1619 时间:2021-03-14 08:54:21 作者:admin

linux I/O多路复用模型,为什么epoll性能高于select和poll?

严格地说,这种说法是不准确的。Epoll的性能并不总是比select好。首先,我们需要了解select和Epoll的基本原理。

假设我们现在有100个套接字连接。select的方法是每隔一段时间轮询这100个连接,以确定是否存在网络事件。如果有,它会处理它们。

Epoll的方法是创建一个链表,然后告诉操作系统,如果100个连接中的任何一个发生网络事件,它将被放入链表中。然后epoll每隔一段时间就会检查链表中是否有元素,如果有则进行处理。

与select相比,epoll大大减少了空轮询次数,提高了轮询效率。同时,epoll使用MMAP对其进行优化,因为它需要在select轮询期间将所有连接的FD从内核复制到用户空间,这会增加IO开销。

然而,我们不能简单地说谁更好。

例如,如果100个连接的网络活动非常频繁,则select的每次轮询将很少或没有空轮询,select的无用功能将非常少。相反,epoll的性能会因为多了一步操作而变差。

因此,select适用于业务时间较短的短链接,如通用HTTP服务。Epoll适用于连接时间长但网络活动不频繁的场景,如聊天室。

linux怎么样,它是做什么的,以后工作好吗?

作为一名DBA操作和维护工程师,

学习Linux有很多用途,如果您想在Linux中有一个良好的发展。Linux是必须的

精通Linux找工作比较容易

选择是用来设置超时的。它的第一个参数最初是一个文件号。如果您长时间读取文件而不返回,您将跳出超时。这部分代码将文件号设置为0,这意味着它只是为了控制延迟。然而,看看你的代码部分,很明显这只是一个比较,为什么精确计时的sleep代码能做到这一点,是因为Linux本身的sleep函数非常不准确(Windows也是如此)。当线程和CPU任务较多时,休眠函数的精度根本不能满足要求。因此,在这段代码中使用Select而不是sleep更为准确,其准确性与内核有关。如果内核的勾选频率一般决定,100Hz也有1000Hz(因内核版本不同而有所不同),也就是说选择long可以精确到10ms,或者1ms,但是sleep不能,所以这个函数最重要的作用是用高精度的select函数代替低精度的sleep函数来实现更精确的延时

Linux常用操作命令:LS command:(显示指定工作目录下的内容)、CD(切换目录),PWD(显示当前工作目录的绝对路径)、clear(清除屏幕上的信息)、MKDIR(创建目录)、rmdir(删除目录)、RM(删除不必要的文件)、CP(复制)、MV(重命名)、cat(查看文件内容)等,Find(在指定目录中查找文件)、shutdown-h now;shutdown-r now/reboot restart halt stop select:指定要实现的属性列:指定查询对象,其中:指定查询条件,例如:查询所有职称为“讲师”的教师的基本工资和津贴,选择姓名、基本工资、津贴来源、教师基本信息表、工资表其中教师基本信息表。员工编号=工资单。员工编号和职称=“讲师”应该够清楚吗?

linux的select函数详解 linux select函数 linuxselect效率

版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。