select、poll、epoll 区别在哪儿?

本文探讨了Linux下的同步IO多路复用技术,包括select、poll和epoll的区别。epoll作为较新的机制,通过事件通知实现了高效性能,特别是对于大量文件描述符的管理。它提供了edge-triggered(ET)和level-triggered(LT)两种模式,其中ET模式常用于实现如nginx的高并发场景。
摘要由CSDN通过智能技术生成

之前的《什么是 IO》中提到了 linux 的系统调用: select 、poll、epoll 都能实现 同步 IO 多路复用, 但是它们之间的区别是什么?哪一个方式性能更好? 带着疑问我们来开始今天的话题.

这些都是系统 Linux 操作系统的系统调用.所以学习的最好方式就是手册,首先看 select.

select

允许程序监视多个文件描述符, 直到一个或多个文件描述符变为某种 IO 操作的“ready”状态,比如读、写.

一个文件描述符是 ready 状态意味着可读可写, 可读是指数据准备好了,发起 read() 系统调用不会阻塞, 可写是指向该文件描述符发起 write() 系统调用时不会阻塞.

下面看 select 的传参:

  int select(int nfds, fd_set *readfds, fd_set *writefds,
                  fd_set *exceptfds, struct timeval *timeout);

nfds: 是指readfds、writefds、exceptfds 三个文件描述符集合的最大值 + 1

readfds: 被监控是否可读的文件描述符集合

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

【非典型Coder】

赏个鸡腿吧

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值