libevent学习笔记

来源:互联网 发布:淘宝去广告 编辑:程序博客网 时间:2024/05/19 13:22

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模式



0 0
原创粉丝点击