Libevent 是一个轻量级的开源高性能网络库,使用者众多,研究者更甚;Libevent 是用 c 语言编写的,而且几乎是无处不函数指针,Libevent 已经被广泛的应用,作为底层的网络库;比如 memcached、Vomit、Nylon、Netchat等等。
Libevent 简介:
- 优点:
- 事件驱动(event-driven),高性能;
- 轻量级,专注于网络,不如 ACE 那么臃肿庞大;
- 源代码相当精炼、易读;
- 跨平台,支持 Windows、Linux、*BSD 和 Mac Os;
- 支持多种 I/O 多路复用技术, epoll、poll、dev/poll、select 和 kqueue 等;
- 支持 I/O,定时器和信号等事件;
- 注册事件优先级;
- 事件处理机制:Libevent 本身就是一个典型的 Reactor 模型,采用Rector的事件处理机制。Reactor 释义“反应堆”,是一种事件驱动机制。和普通函数调用的不同之处在于应用程序不是主动的调用某个 API 完成处理,而是恰恰相反,Reactor 逆置了事件处理流程:
- 应用程序需要提供相应的接口并注册到 Reactor 上,如果相应的事件发生,Reactor 将主动调用应用程序注册的接口,这些接口又称为“回调函数”。
- 向Libevent 框架注册相应的事件和回调函数;当这些事件发生时,Libevent 会调用这些回调函数处理相应的事件(I/O 读写、定时和信号)。
- Rector模式:https://blog.csdn.net/zhanxiao5287/article/details/99231878