libevent 参考手册-前言

前言:Libevent 参考手册

Libevent是一个提供快速可移植的非堵塞IO库,它设计的目标是:

1、可移植性

使用libevent写的程序,应该在所有支持Libevent平台上有效,甚至在没有真正好的方法进行非堵塞IO时,Libevent也应该支持这种方式,所以你的程序可以在有限的环境下运行。

2、 高效性

该库在每个平台上尝试使用最快且可用的非堵塞IO实现,同时不会引入很大的开销。

3、 可扩展性

Libevent被设计成在程序中需要数以千计socket连接时也能正常运行。

4、易用性

       任何条件允许情况下,使用Libevent库编写函数都应该是稳定、可移植的。

 

 

Libevent库被分为以下部分:

1、evutil

       通用功能抽象出不同平台网络实现的不同之处。

2、Event 和event_base

       这是库Libevent的核心,对各种特殊平台提供了抽象API,基于事件的非堵塞IO支持。

你可以知道何时socket是可写或者可读的,做基本的超时判断,并检测操作系统信号。

4、 bufferevent

这些函数提供了围绕Libevent event_based为核心的简便包装,可以使你的应用程序请求缓冲区的读写,而不是在socket准备好读写时通知你,它让你知道IO何时实际发生了。

Bufferevent接口同样有多样的后端,这样可以充分利用系统提供的更快捷方式进行非堵塞IO,例如windows下的IOCP

5、 evbuffer

该模块实现了基于bufferevent的缓冲区,提供了有效快捷的接口函数。

6、 Evhttp

简单的HTTP client/server 实现

7、 evdns

简单的DNS client/server实现

8、 evrpc

简单的RPC实现。

 

 

Libevent库

 

构建库时,默认情况下以下库会被安装:

Libevent_core

       所有的核心事件和缓存功能,该库包含所有的event_base,evbuffer,bufferevent,和utility函数。

Libevent_extra

       该库定义了特殊协议函数,你的程序可能用到也可能没用到,包括HTTP,DNS和RPC

Libevent

       由于历史原因,该库还存在,它同时包含libevent_core和libevent_extra,你不应该用它,在将来版本中可能会删除。

 

以下几个库只在一些平台上安装:

Libevent_pthreads

       该库添加了线程和锁的实现,基于线程库,它是同libevent_core有分开的,这样你可以不必连接pthreads来使用libevent库,除非在你确实需要使用多线程时再链接线程库。

Libevent_openssl

       该库提供了使用bufferevents和OpenSSl库的加密传输,同样它同libevent_core分开,这样若不需要就不用加载该库,除非实际中确实需要

 

 

头文件:

当前所有的共有头文件都在event2路径下,这些头文件被分为三类:

1、 API头文件

API头文件定义库当前公共接口,这些头文件没有特殊后缀

2、 兼容性头文件

兼容性头文件包含函数声明的定义,一般不需要包含该类头文件

3、 结构头文件

这些头文件定义了结构体,使用相对随意的布局方式,其中一些是为了防止你要快速访问结构体组成,一些是由于历史原因而存在,依赖其中任何一个结构体都可能直接破坏你程序同libevent其它版本的兼容性,有时候调试都很难找出来,这些头文件有后缀”_struct.h”

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值