poll 模型

poll 模型

  • 工作原理 poll 模型的工作原理与 select 类似,都是通过一个函数来监视多个文件描述符的状态变化。poll 使用一个 pollfd 结构体数组来表示要监视的文件描述符及其关注的事件,它通过 poll 函数来等待这些文件描述符上的事件发生。
  • 函数原型
#include <poll.h>

int poll(struct pollfd *fds, nfds_t nfds, int timeout);
  • fds:指向一个 pollfd 结构体数组,每个 pollfd 结构体包含了要监视的文件描述符、关注的事件和返回的事件。
  • nfds:表示 fds 数组的元素个数。
  • timeout:指定 poll 函数的超时时间,单位为毫秒。若为 -1 则表示无限等待,直到有事件发生。
  • 优缺点
    • 优点:相较于 selectpoll 没有文件描述符数量的限制,因为它使用链表来存储文件描述符,理论上可以监视任意数量的文件描述符。
    • 缺点:和 select 一样,poll 也需要在每次调用时将文件描述符信息从用户空间复制到内核空间,并且在返回时将结果从内核空间复制回用户空间,存在一定的性能开销;同时,poll 返回后也需要遍历 pollfd 数组来确定哪些文件描述符发生了事件,随着文件描述符数量的增加,效率会降低
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值