Libevent 参考手册:前言
1 从一万英尺外看 Libevent
Libevent 是用于编写高速可移植非阻塞 IO 应用的库,其设计目标是:
可移植性:使用 libevent 编写的程序应该可以在 libevent 支持的所有平台上工作。即使
没有好的方式进行非阻塞 IO,libevent 也应该支持一般的方式,让程序可以在受限的
环境中运行。
速度:libevent 尝试使用每个平台上最高速的非阻塞 IO 实现,并且不引入太多的额外开
销。
可扩展性:libevent 被设计为程序即使需要上万个活动套接字的时候也可以良好工作。
方便:无论何时,最自然的使用 libevent 编写程序的方式应该是稳定的、可移植的。
libevent 由下列组件构成:
evutil:用于抽象不同平台网络实现差异的通用功能。
event 和 event_base:libevent 的核心,为各种平台特定的、基于事件的非阻塞 IO 后端
提供抽象 API,让程序可以知道套接字何时已经准备好,可以读或者写,并且处理基
本的超时功能,检测 OS 信号。
bufferevent:为 libevent 基于事件的核心提供使用更方便的封装。除了通知程序套接字
已经准备好读写之外,还让程序可以请求缓冲的读写操作,可以知道何时 IO 已经真
正发生。(bufferevent 接口有多个后端,可以采用系统能够提供的更快的非阻塞 IO 方
式,如 Windows 中的 IOCP。)
evbuffer:在 bufferevent 层之下实现了缓冲功能,并且提供了方便有效的访问函数。
evhttp:一个简单的 HTTP 客户端/服务器实现。
evdns:一个简单的 DNS 客户端/服务器实现。
evrpc:一个简单的 RPC 实现。
2 库
创建 libevent 时,默认安装下列库:
libevent_core:所有核心的事件和缓冲功能,包含了所有的 event_base、evbuffer、
bufferevent 和工具函数。
libevent_extra:定义了程序可能需要,也可能不需要的协议特定功能,包括 HTTP、
DNS 和 RPC。
libevent:这个库因为历史原因而存在,它包含 libevent_core 和 libevent_extra 的内容。
不应该使用这个库,未来版本的 libevent 可能去掉这个库。
某些平台上可能安装下列库:
评论0