Libevent是一个用于编写高速可移植非阻塞IO应用的库,它的设计目标是:git
可移植性:使用libevent编写的程序应该能够在libevent支持的全部平台上工做。即便没有好的方式进行非阻塞IO,libevent也应该支持通常的方式,让程序能够在受限github
的环境中运行。后端
速度:libevent尝试使用每一个平台上最高速的非阻塞IO实现,而且不引入太多的额外开销。缓存
可扩展性:libevent被设计为程序即便须要上万个活动套接字的时候也能够良好工做。服务器
方便:不管什么时候,最天然的使用libevent编写程序的方式应该是稳定的、可移植的。网络
libevent由如下组件构成:函数
evutil:用于抽象不一样平台网络实现差别的通用功能。测试
event和event_base:libevent的核心,为各类平台特定的、基于事件的非阻塞IO后端提供抽象API,让程序能够知道套接字什么时候已经准备好,能够读或者写,而且处理基设计
本的超时功能,检测OS信号。dns
bufferevent:为libevent基于事件的核心提供使用更方便的封装。除了通知程序套接字已经准备好读写以外,还让程序能够请求缓冲的读写操做,能够知道什么时候IO已经真
正发生。(bufferevent接口有多个后端,能够采用系统可以提供的更快的非阻塞IO方式,如Windows中的IOCP。)
evbuffer:在bufferevent层之下实现了缓冲功能,而且提供了方便有效的访问函数。
evhttp:一个简单的HTTP客户端/服务器实现。
evdns:一个简单的DNS客户端/服务器实现。
evrpc:一个简单的RPC实现。
安装libevent库:
注意:必须以root用户身份执行如下操做
一、下载源码包
https://github.com/downloads/libevent/libevent/libevent-2.0.21-stable.tar.gz
二、解压
tar zxvf libevent-2.0.21-stable.tar.gz
三、配置安装路径
cd libevent-2.0.21-stable
./configure -prefix=/usr
四、编译并安装
make
make install
五、测试libevent是否安装成功:
#ls -al /usr/lib | grep libevent
六、若是编译后的程序提示找不到libvent的so,则建立库的连接和缓存文件
ldconfig