Linux的三种I/O复用方式——poll

本文详细介绍了Linux的I/O复用函数中的poll机制,包括poll的结构体、事件类型、特点以及存在的问题。poll相比于select具有更简洁的设计,允许关注更多的事件类型,并且在文件描述符管理上有所改进,但仍然存在探测就绪文件描述符时的时间复杂度问题。
摘要由CSDN通过智能技术生成

I/O复用函数

select
poll
epoll<Linux的独有的I/O复用>

接下来我们分三次进行介绍I/O复用

poll

poll的原型是

int poll (struct pollfd *fds,int nfds,int timeout);

比起select更加简洁了一些,事件不再由内核在线修改,而是存入系统提供的结构体中,将文件描述符和从内核拷贝而来的改变数据划分开,不需要每次重置poll,比select聪明了一些,以下是struct pollfd的内容

struct pollfd
{	int fd//关注的文件描述符
	short events;//fd将会发生什么事情,或者期望看到的事情,写在这里
	short revents;//由内核修改,返回此文件描述符发生的事件类型(必须是events指定的关注的事件)
}

ndfs:传入的结构体数组长度,因为此时的*fds会退化为指针,更准确的来说,ndfs的类型是ndfs_t是无类型的long int数据
timeout:等同于select中timeout的效果
由于pollfd的特性,我么能关注的事件类型就更多了,如下图(来自Linux高性能服务器编程)
在这里插入图片描述
使用前,在文件一开始加入#define _GNU

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值