Libevent库 是一个用C语言开发的、轻量级的开源高性能事件通知库,主要功能特点如下:

  1. 事件驱动(event-driven),高性能;
  2. 注册事件分优先级;
  3. 支持 I/O,定时器和信号等事件信息;
  4. 跨平台,支持多操作系统,例如:Linux,Windows,Mac;
  5. 源代码比较易懂,易读;
  6. 轻量级,专注于网络,不如 ACE 那么臃肿巨大;
  7. 支持多种I/O复用,poll,select,epoll等等。

Libevent库 已经被广泛的应用,作为底层的网络库;比如 Netchat、Vomit、Nylon、memcached等等。

Libevent 是一个典型的 Reactor 模型,什么是Reactor模式?

Reactor模式首先是事件驱动的,可以处理并发服务请求,当有一个或多个并发输入源,会有一个Service Handler,有多个Request Handlers,这个Service Handler会同步的将输入的请求(Event)多路复用的分发给相应的Request Handler。原理图如下:

【系统】libevent库学习-LMLPHP

所有的事件处理都会经过中间的Service Handler,然后Service Handler会将各个事件分发到具体的Request Handler去处理。

05-11 20:45