简谈epoll

本文详细介绍了I/O编程中关注的问题,重点讲解了epoll的API、工作模式以及与select、poll的对比。epoll通过回调机制和红黑树数据结构提高了效率,支持边缘触发和水平触发,尤其适用于高并发的I/O密集型场景。
摘要由CSDN通过智能技术生成

文章目录
I/O编程关注的问题
阻塞io模型和⾮阻塞io模型
I/O多路复用
epoll的API
主要函数
epoll的两种触发方式
epoll与select、poll的对比
epoll更高效的原因
I/O编程关注的问题
epoll我们经常使用在网络编程I/O模型中,在此模型中我们主要关注的问题点是连接如何建立,连接何时断开,消息如何到达,消息是否发送完毕。 用户空间监测内核的消息得到这个结果。

在上图的蓝色框中,我们主要的关注的是读写是否被阻塞,数据是否达到,到达了怎么通知给用户空间。

相关视频

【免费领取】音视频开发学习路线大纲以及学习视频资料

阻塞io模型和⾮阻塞io模型

阻塞在哪里?

什么来决定阻塞还是非阻塞?

//连接的fd
fcntl(c->fd, F_SETFL, O_NONBLOCK);

阻塞和非阻塞具体的差异是什么?

io函数在数据未到达时是否即刻返回

 

阻塞模型和非阻塞模型主要区别在数据准备阶段是否立刻返回,如果是在阻塞模型,数据准备阶段和数据拷贝阶段都会被阻塞,处理时间会比较长;在非阻塞模型中,如果在数据准备阶段,调用read/recv会立刻给一个结果(为准备好返回-1)。

I/O多路复用
I/O多路复用主要有slect, poll 和 epoll 三个主要的函数。这里我们主要介绍epoll函数。实现的机制主要是使用一个线程来检测多个io事件,把相应的事件fd添加到epoll中,使用epoll来管理。如果读写事件准备好时,epoll会触发相应的世间来通知到用户。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值