Libevent应用 (零) Libevent简单介绍与安装

时间:2022-03-04 03:51:35

高并发libevent

​ 现在高性能网络服务器基本都是异步I/O模式构建的,而Libevent就是对select、poll、epoll等各类异步模式接口的封装,通过设置回调函数的方式,在监听文件描述符和套接字读写事件的同时,还兼任定时器和信号接收的管理工作。

​ 所以Libevent对高性能服务器后台开发、跨平台开发、网络开发都具有很大的参考学习价值。官方主页显示很多的项目都用到了Libevent库,而且还可作为主机内部进程间通信和数据交互。Libevent也考虑到pthread线程模型的同步问题,保证关键数据结构在多线程并行下的数据安全! 

​ libevent 由下列组件构成:

  1. evutil:用于抽象不同平台网络实现差异的通用功能。

  2. event 和event_base:libevent 的核心,为各种平台特定的、基于事件的非阻塞IO 后端提供抽象API,让程序可以知道套接字何时已经准备好,可以读或者写,并且处理基本的超时功能,检测OS 信号。

  3. bufferevent:为libevent 基于事件的核心提供使用更方便的封装。除了通知程序套接字已经准备好读写之外,还让程序可以请求缓冲的读写操作,可以知道何时IO 已经真正发生。(bufferevent 接口有多个后端,可以采用系统能够提供的更快的非阻塞IO 方式,如Windows 中的IOCP。)

  4. evbuffer:在bufferevent 层之下实现了缓冲功能,并且提供了方便有效的访问函数。

  5. evhttp:一个简单的HTTP 客户端/服务器实现。

  6. evdns:一个简单的DNS 客户端/服务器实现。

  7. evrpc:一个简单的RPC 实现

​ ubuntu上安装libevent只需输入以下命令:

sudo apt-get install libevent-dev

​ 也可以直接到官网上下载源码包来安装。http://libevent.org/

#在当前目录下解压安装包:
tar -zxvf libevent-2.0.22-stable.tzr.gz
cd libevent-2.0.22-stable
#配置安装库的目标路径:
./configure --prefix=/usr
#编译安装libevent库:
make
make install
#查看libevent库是否安装成功:
ls -al /usr/lib | grep libevent

通过函数event_get_version()可以查看libevent的版本。