事件处理流程
当应用程序向libevent注册一个事件后,libevent内部是怎么样进行处理的呢?
1:首先应用策划年供需准备并初始化event,设置好事件类型和回调函数
2:向libevent添加该事件event。对于定时事件,libevent使用一个小根堆管理,key为超时时间;
对于Signal和I/O事件,libevent将其放入到等待链表中,这是一个双向链表结构
3:程序调用event_base_dispatch()系列函数进入无线循环,等待事件,以select()函数为例;
每次循环前libevent会检查定时事件的最小超时时间tv,根据tv设置select()的最大等待时间,以
便于后面及时处理超时事件;