libevent学习笔记 - 0 Preliminaries

(个人能力有限,疏漏难免,还望谅解,不喜勿喷)查看官方原文请点击这里
0 Preliminaries
1 设置 Libevent库
2 event_base

  • 简介

Libevent是编写快速便捷非阻塞IO的库,有以下几部分组成:
evutil : 通常用来提取不同平台网络实现的区别;
event and event_base : Libevent的核心模块,提供sockets可读写时刻,超时监听,检测操作系统新号等功能;
bufferevent : 更好的封装Libevent 内核,让程序可直接读写缓存,不需要实时监听 sockets来读写数据。可提供多后台运行线程,能够利用系统的快速非阻塞IO机制,例如Windows的IOCP API。
evbuffer : 该模块实现bufferevents下的缓存,提供高效的与或访问功能;
evhttp : 简单的HTTP client/server 实现;
evdns : 简单的DNS client/server 实现;
evrpc : 简单的RPC实现;

  • 组成库

编译Libevent时,默认安装以下库:
libevent_core : 所有event 和 buffer核心功能,该库包含所有的event_base, evbuffer, bufferevent和功能函数;
libevent_extra:该库定义了包含HTTP, DNS 和 RPC等 特定协议功能;
libevent:历史遗留,包含了 libevent_core 和 libevent_extra的内容,一般调用用不到该部分,未来版本可能会删除;

  • 头文件

现在所有Libevent头文件安装在文件夹event2下,分为三大类:
API headers:API头文件定义了 Libevent的公共接口,这些头文件都没有特殊后缀;
Compatibility headers:包含了过时函数的定义,除非使用老版本的Libevent,否则不要包含这些头文件;
Structure headers:很明显,自然是放定义结构体的头文件了;

  • 如何使用老版本的Libevent

前段时间因为公司项目需要,在我们的程序中对Libevent进行了升级,在版本更替的过程中,确实出现了很多接口的改变,这确实是让人很头疼的事。从Libevent 2.0开始已将API修改的更合理、容错性更好,但是有时候因为某些原因我们需要使用老版本(低于Libevent 2.0)的API,老版本的Libevent具有更少的头文件,且不在文件夹“event2”下,如图所示:
这里写图片描述

在 Libevent 2.0以后, 老版本的头文件被封装在新版头文件里。

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值