首页 > 试题广场 >

请你介绍一下 IO 多路复用

[问答题]
请你介绍一下 I/O 多路复用
在单个线程中管理多个I/O的状态来管理多个I/O流
发表于 2022-07-27 11:01:17 回复(0)
I/O多路复用指的是用一个线程来记录每个I/O流的状态来管理多个I/O流。I/O多路复用有select、poll、epoll三种实现方式。
发表于 2023-09-21 20:23:28 回复(0)
1、select是主动轮询1024个符号;而epoll是被数据流触发的,并且可以指定要处理的符号列表,数量不限制; 2、LT水平触发 有数据就发;ET 边缘触发,只发一次
发表于 2022-08-20 13:50:03 回复(0)
单个线程通过io多路复用技术来监测多个io流
编辑于 2024-03-03 13:55:16 回复(0)
IO多路复用的方式有select、poll、epoll。 select和poll的原理相同,都是维护了一个文件描述符的集合,在调用select和poll的时候将所有文件描述符复制到内核来轮询是否有IO事件以获取事件个数,之后再对所有文件描述符轮询一遍以处理IO事件,他们的区别是select使用线性表实现,有1024的数量限制,poll使用链表实现没有数量限制。 epoll底层使用红黑树实现,使用epoll_create在内核中创建一个eventepoll的数据结构,里面包含两个数据成员一个是需要检测的fd的信息(红黑树),一个是就绪链表(双向链表)。调用epoll_crtl可以向epoll对象中添加修改删除要监听的文件描述符以及事件。调用epoll_wait可以让内核检测就绪的事件,然后放到就绪链表中返回。
编辑于 2024-03-01 15:44:08 回复(0)
IO多路复用可以同时监听多个事件,没有就绪事件的时候,可以去干别的,等待有就绪事件的时候,会通知你再回来。有select、poll、epoll三种方式。select会限制文件描述符的大小,有两次用户态和内核态的拷贝和两次遍历。poll使用链表改进了文件描述符的大小。epoll包含三个函数,实现监听
发表于 2023-08-09 16:35:55 回复(0)
在单个线程中,监听多个I/O流。
发表于 2023-06-15 09:34:09 回复(0)
epoll 红黑树,双向就绪链表
发表于 2023-02-23 09:47:23 回复(0)
linux的最大文件描述符默认是1024个,所以set使用了1024作为长度。 select注册时候会将对应的位置1 。 select会对文件描述符对应的位进行修改,返回的时候文件描述符为1的才是准备就绪的事件。 所以会将原本注册但是没有发生的事情变成0,因此需要重新进行事情的注册。
编辑于 2022-09-09 16:41:35 回复(0)