libevent库简介

libevent是一个轻量级的基于事件驱动的高性能的开源网络库,支持多个平台(包括:Windows、Linux、Bsd等),对多个平台的I/O复用技术进行了封装。libevent使用select、poll和epoll等系统调用实现I/O复用, 但是针对于多个系统平台上的不同的I/O复用实现方式,libevent进行了重新的封装,并提供了统一的API接口。

libevent在实现上使用了事件驱动这种机制,其本质上是一种Reactor模式。

Reactor模式,是一种事件驱动机制。应用程序需要提供相应的接口并注册到Reactor上,如果相应的事件发生,Reactor将主动调用应用程序注册的接口,这些接口又称为“回调函数”。

lbevent的事件支持三种,分别是网络IO、定时器和信号。定时器的数据结构使用最小堆(Min Heap),以提高效率。网络IO和信号的数据结构采用了双向链表(TAILQ)。

安装
libevent源码压缩包下载:http://libevent.org/
或者直接从github上clone源码:git clone https://github.com/nmathewson/Libevent.git

源码下载之后,然后进行编译、安装:

#cd Libevent
#./configure
#make install

libevent功能
Libevent提供了事件通知、IO缓存、定时器、异步解析DNS、事件驱动的HTTP Server和RPC框架:

1)事件通知:当文件描述符可读可写时将执行回调函数。
2)IO缓存:缓存事件提供了输入输出缓存,能自动的读入和写入,用户不必直接操作io。
3)定时器:libevent提供了定时器的机制,能够在一定的时间间隔之后调用回调函数。
4)信号:触发信号,执行回调。
5)异步的DNS解析:libevent提供了异步解析DNS服务器的API。
6)事件驱动的HTTP Server:libevent提供了一个简单的,可集成到应用程序中的HTTP服务器。
7)RPC客户端服务器框架:libevent为创建RPC服务器和客户端创建了一个RPC框架,能自动的封装和解封数据结构。

参考文档:
https://blog.csdn.net/majianfei1023/article/details/46485705
https://www.cnblogs.com/nearmeng/p/4043548.html

猜你喜欢

转载自blog.csdn.net/qq_41688455/article/details/85265351