libevent开篇

    libevent是一个基于事件的网络库,用于管理定时器事件,网络IO事件,以及信号事件三种事件类型。libevent是一个

单线程的网络处理库。但它可以支持多线程,通过创建多个libevent实体(event_base)来实现,memcached即采用这种

方式来实现多线程。

    libevent是一个基于事件的高性能网络编程库,对于每个事件,可以指定优先级,高优先级事件将优先处理。

    libevent通过IO多路复用函数,将网络IO事件,定时器事件以及信号事件统一起来,达到一致性处理的目的。主要流程如下:

libevent开篇_第1张图片

在epoll_wait返回后,依次检测信号事件,IO事件,定时器事件,将符合要求的事件激活,放于激活事件队列中去,

最后,统一从激活事件队列中取激活事件,进行处理。信号,IO,超时事件统一在IO多路复用函数上,使整个事件循环

清晰明了。


恩,这就算开题了吧,接下来,逐一分析libevent的各个实现细节,力求简单明了。

你可能感兴趣的:(libevent开篇)