libevent学习笔记

16 篇文章 0 订阅

1、libevent处理3种事件,超时,io与信号

超时也即定时器是通过min-heap来实现的

其他io与信号都是通过系统的I/O demultiplexer来实现的,一般就是epoll(linux)

2、为了提高性能,libevent对时间进行了缓存,也即在清空缓存之前的所有add的超时事件都是以这个缓存时间为依据的。

如果这次的循环时间之心过长,这会导致在这段时间内add的事件会提前执行(I/O demultiplexer等待之前会清空缓存,不会有问题,但是当超时的回调占用太长的cpu,如超过一秒,在这个回调过程中add的超时事件就会提前1秒执行)。造成相当诡异的问题

3、libevent的epoll没有指定模式(level triggered与edge-triggered),也即默认用的lt模式



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值