IO多路转接
文章平均质量分 73
IO多路转接 学习
于-久
嵌入式学习中
展开
-
IO多路转接 epoll
epoll 全称 eventpoll,是 linux 内核实现IO多路转接/复用(IO multiplexing)的一个实现。IO多路转接的意思是在一个操作里同时监听多个输入输出源,在其中一个或多个输入输出源可用的时候返回,然后对其的进行读写操作。epoll是select和poll的升级版,相较于这两个前辈,epoll改进了工作方式,因此它更加高效。对于待检测集合select和poll是基于线性方式处理的,epoll是基于红黑树来管理待检测集合的。原创 2024-09-24 21:46:14 · 905 阅读 · 0 评论 -
IO多路转接 poll
poll函数poll的机制与select类似,与select在本质上没有多大差别,使用方法也类似,下面的是对于二者的对比:内核对应文件描述符的检测也是以线性的方式进行轮询,根据描述符的状态进行处理poll和select检测的文件描述符集合会在检测过程中频繁的进行用户区和内核区的拷贝,它的开销随着文件描述符数量的增加而线性增大,从而效率也会越来越低。select检测的文件描述符个数上限是1024,poll没有最大文件描述符数量的限制select可以跨平台使用,poll只能在Linux平台使用。原创 2024-09-22 16:48:00 · 438 阅读 · 0 评论 -
IO多路转接 select
使用select这种IO多路转接方式需要调用一个同名函数select,这个函数是跨平台的,Linux、Mac、Windows都是支持的。程序猿通过调用这个函数可以委托内核帮助我们检测若干个文件描述符的状态,其实就是检测这些文件描述符对应的读写缓冲区的状态:读缓冲区:检测里边有没有数据,如果有数据该缓冲区对应的文件描述符就绪写缓冲区:检测写缓冲区是否可以写(有没有容量),如果有容量可以写,缓冲区对应的文件描述符就绪读写异常:检测读写缓冲区是否有异常,如果有该缓冲区对应的文件描述符就绪。原创 2024-09-22 10:08:20 · 424 阅读 · 0 评论