libevent参考手册翻译:热身

Table of Contents

所有者:Nick Mathewson

翻译者:Magic_Gcc

1 libevent参考手册:热身

1.1 简介

libevent是一个用于编写高效、可移植、无阻塞IO的库。它的设计目标是:

可移植性:利用libevent编写的程序必须能在所有支持libevent的平台上工作。甚至当没有好的方式去实现无阻塞IO,libevent也应做到一定水准,以便应用能在严格的环境下运行。

效率:libevent试图使用每个平台上最快使用的无阻塞IO实现,而不引进其他开销。

可扩展性:libevent设计成让需要激活成千上万个socket的程序都能正常运行。

易用性:用libevent编写应用最自然的方式什么时候都应该是稳定和可移植的。

1.2 模块划分

1.2.1 evutil

提供通用功能,将在不同平台上网络实现的差异抽象出来。

1.2.2 event and event_base

这是libevent的核心部分。为不同特定平台、基于事件的无阻塞IO后端提供抽象的接口;能当sockets就绪时,通知你去做读写操作,或者做超时功能及检测系统信号。

1.2.3 bufferevent

这些函数在libevent event_base核心模块基础上提供更易用的封装。让程序请求带缓存的读和写,并当IO确实发生时通知程序,而不是当socket就绪时通知你。

1.2.4 evbuffer

该模块在bufferevent下面实现buffer,并为高效易用的访问提供接口。

1.2.5 evhttp

简单实现HTTP客户端/服务端

1.2.6 evdns

简单实现DNS客户端/服务端

1.2.7 evrpc

简单RPC实现

1.3 目标库说明

编译完libevent后,默认安装以下库:

1.3.1 libevent_core

所有关于核心的event和buffer的功能都在其中,它包含eventbase,evbuffer,bufferevent,和utility函数。

1.3.2 libevent_extra

定义应用可能会/可能不会用到的特定协议功能,包含HTTP,DNS和RPC。

1.3.3 libevent

这个库存在时有历史原因的;包含了以上提到的两个库的内容;目前不应该使用它,它将在未来的版本被去掉。

1.3.4 libevent_pthreads

增加基于可移植的三方线程库实现线程和锁。它和libevent_core分开以便开发者按是否需要多线程而去自主选择是否链接该库。

1.3.5 libevent_openssl

使用bufferevent和OpenSSL库实现加密通信,同样按项目需求决定是否链接该库。

1.4 头文件说明

当前所有公用的libevent头文件被安装在event2目录下,大体分为以下三类:

1.4.1 API头文件

开放当前libevent版本所有公用接口,这些接口都没有特殊的前缀。

1.4.2 兼容头文件

兼容的头文件包含被弃用函数的定义。如果你的程序不是从旧版本移植过来的话,请不要使用这些头文件。

1.4.3 结构化头文件

这些头文件定义一些相对易变的结构体。当你需要对一些结构化的模块进行快速访问时,这些接口是透明的。任何直接依赖这些结构体的程序都难以与旧版本兼容,有时候很难进行调试。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值