epoll的水平触发和边沿触发方式在应用中什么时候会返回可读或可写

本文详细探讨了epoll的水平触发和边沿触发两种模式在实际应用中的触发条件。水平触发下,关注的读写事件只要有数据即可触发;边沿触发则在状态变化时触发,如读缓冲由空到非空、写缓冲由满到非满。通过三个测试案例,验证了在不同情况下epoll_wait的返回行为,强调了新数据到达对于边沿触发模式的影响。
摘要由CSDN通过智能技术生成

水平触发:

当我们关注的事件为读事件时,只要缓存中有东西可读,那么就触发;当我们关注的事件为写事件时,只要缓存中有东西可写那么就触发。

边沿触发:

当我们关注的事件为读事件时:1.当由不可读变为可读时会触发(即BUFFE由空到非空)。2.当可读的内容变多时(即有新的数据到来)会触发。

当我们关注的事件为写事件时:1.由不可写变为可写时会触发(即BUFFE由满变为非满)。2.当buffer中的内容变少时(旧数据被发送走)会触发。

 

在边沿触发时,只要缓冲中有数据可读或可写,并且用在epoll_ctl中传入的参数时MOD,那么也会返回可读或可写而不管缓冲中可读内容是否变多,或者可写的buffer里的内容是否变少。

 

测试一:当用MOD修改时,看读缓冲中的内容没有变多(也即没有新数据到来)epoll_wait是否会返回

#include<stdio.h>
#include<pthrea
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值