Libevent 参考手册:Libevent from 1000 feet
Libevent一个为了实现一个高效且可移植的非阻塞I/O。它设计的目标是:
可移植性:
用Libevent写的程序可以在所有的Libevent所支持的平台上使用。尽管使用非阻塞式I/O不是十分的恰当,Libevent也应该马马虎虎的支持,so that your program can run in restricted environments.
速度:
Libevent尽量使用在每个平台上的最快非阻塞I/O且他们都不会产生太多的开销。
可扩展性:
Libevent 在需要运行数万数千套接字的环境下依然能够工作的很好。
便利性:
任何可能的时候,用Libevent写程序最自然的方式应该是稳固和可移植的。
Libevent可分为以下几个组建:
evuntil:
在不同的平台的网络中抽象出通用的函数。
event and event_base:
这个是Libevent 的核心,他为各个平台的基于事件的非阻塞IO提供了抽象的API。它能告诉你套接字什么时候可以读写,执行基础的超时功能,并检测操作系统的信号。
bufferevent:
这些函数提供了更方便的包包装在Libevent基于事件核心的周围。他们通知你请求缓冲的读写,而不是通知你套接字准备好了,他们真正的让你知道I/O什么时候发生的。
evbuffer:
这个模块实现基于事件缓存的缓存,并提供了方便和有效的函数。
evhttp:
一个简单的HTTP 客户端/服务器的实现。
evdns:
一个简单的DNS 客户端/服务器的实现
evrpc:
一个简单的RPC的实现。
库:
当Libevent编译完后,默认安装下面的库:
libevent_core:
所有核心的事件和缓存功能。这个库包含所有的event_base,evbuffer,bufferevent和utility函数。
libevent_extra:
这个库定义了具体协议的功能,那些你可能在你的应用中用到的功能,像HTTP,DNS,和RPC
libevent:
这个库的存在是因为历史原因,他包含libevent_core和libevent_extra的内容。你不应该使用它,它将在未来的版本中删除。
下面的库只是安装在部分平台上:
libevent_pthread:
这个库添加了线程和锁的实现基于pthread可移植的线程库。它被从libevent_core分离出来,所以你不需要为了用Libevent而强制连接pthreads除非你真正以多线程的范式使用Libevent。
libevent_openssl:
这个库通过使用bufferevent和OpenSSL库提供了加密连接的支持。它被从libevent_core分离出来,所以你不需要强制连接到OpenSSL来使用Libevent除非你真正的想使用加密连接。
头文件
所有当前公开的Libevent头文件都被安装到了event2目录。头文件下降到三个大分类中。
API 头文件:
API头文件是Libevent定义当前公开的借口的。这些头文件没有特殊的前缀。
兼容性头文件:
兼容性头文件包括已果实函数的定义。你应该包含它除非你从一个老版本的Libevent移植程序。
结构性头文件:
这些头文件定义了相对易变的架构。其中有一些你需要快速访问的结构;一些的存在是因为历史版本的原因。 Relying on any of the structures in headers directly can break your program’s binary compatibility with other versions of Libevent,有时在hard-to-debug方式下,这些头文件会有“_struct.h”前缀。
原文地址:
翻译的比较烂,求有针对性拍砖....