原文链接http://www.wangafu.net/~nickm/libevent-book/Ref0_meta.html

Libevent使用手册:前瞻

总览:

Libevent是一个用来写高性能跨平台非阻塞IO程序的库.它的设计目标如下:

跨平台

一个使用Libevent的程序应当能够运行于libevent支持的各种平台.即便有时(某平台可能)没有一种很好的实现非阻塞IO的方式,libevent也应该用一种还凑合(so-so)的方式,这样你的程序才能运行于一个严苛的环境下。

高速

libevent使用不同平台下可使用的最快的非阻塞IO实现,同时不引入过多的其他开销.

扩展性

libevent被设计为即便是要处理成千上万条活跃链接时也工作良好.

便捷性

无论何时,用libevent写程序的最自然的方式都应该是一种稳定的,跨平台的方式.

Libevent分为以下几个部分

evutil

对不同平台的网络实现抽象而出的一套通用函数

event和event_base

这是Libevent的核心部分.它针对各种各样的平台相关的,基于事件的非阻塞IO(platform-specific, event-based nonblocking IO backends),抽象出一套API.它能够告知你何时sockets可读或可写,提供了基本的超时函数,并能够侦测操作系统信号.

bufferevent

这些函数在Libevent的基于事件的核心代码之上(event-based core)提供了更为便捷的包装.他们使得你的应用程序请求已缓冲的读写,所以只有当真正的IO发生的时候,而不是socket可读写的时候,它们才会通知你.

bufferevent接口有不同的后端实现,所以他可以充分利用不同平台提供的实现非阻塞IO的快速的方式,例如WINDOWS下的IOCP API.

evbuffer

这个模块实现了作为bufferevents基础的buffer,并提供了高效的,易于使用的函数.

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中会消失.

以下的库在部分平台上才会被安装:

libevent_pthreads

这个库添加了基于跨平台线程库的线程和锁的实现.这个库和libevent_core是分开的,所以当你使用Libevent的时候除非你真的需要以多线程的方式使用Libevent,否则你是不需要链接这个库的.

libevent_openssl

这个库使用bufferevents和OpenSSL库,提供了加密通信的功能.这个库和libevent_core是分开的,所以当你使用Libevent的时候除非你真的需要使用加密连接,否则你是不需要链接OpenSSL的.

头文件

所有的头文件都放在event2目录下.这些头文件大体可以分为3种:

API 头文件

一个API头文件定义了一些LIbevent的公共接口.这些头文件的名字不带后缀.

兼容性头文件

兼容性头文件定义了一些已经弃用的函数.除非你想将你的程序从旧版本的Libevent迁移过来,否则你不该使用这些头文件

结构体头文件

这些头文件定义了相对不稳定的组件的结构(These headers define structures with relatively volatile layouts).这些结构被暴露给你一是以防你需要快速地访问该结构,还有一些是出于历史原因.如果你的程序直接依赖于这些头文件中的结构,可能会导致你的程序与不同版本的Libevent有二进制兼容性问题,并且很难调试.这些头文件有“_struct.h”的后缀.

R0:前瞻的更多相关文章

  1. JavaScript:正则表达式 前瞻

    正向前瞻:用来捕获出现在特定字符之前的字符,只有当字符后面跟着某个特定字符才去捕获它.(?=) 负向前瞻:它用匹配只有当字符后面不跟着某个特定字符时才去匹配它.(?!) 在执行前瞻和负向前瞻之类的运算 ...

  2. url(data:image/png;base64,R0**)(转)

    url(data:image/png;base64,R0**) 所谓"data"类型的Url格式,是在RFC2397中 提出的,目的对于一些"小"的数据,可以在 ...

  3. android.os.DeadObjectException memory near r0: 异常处理 Consumer closed input channel or an error occurred. events=0x9

    原地址:http://www.cnblogs.com/wanqieddy/p/3495338.html android.os.DeadObjectException memory near r0: 异 ...

  4. STM32工程中出现 error: A1163E: Unknown opcode R0, , expecting opcode or Macro错误分析及处理

    最近测试以前的一个程序,一般都是打开以前写的程序修改参数直接测试 但是发现以前的编译后出现错误. 奇怪了,以前的出现都是调试好了的啊,一般都是没有错误的,迅速找问题 跳转到错误代码行 代码区域 Hea ...

  5. cloudstack4.4新增功能前瞻

    cloudstack4.4.0新功能前瞻 转载请注明地址:http://blog.csdn.net/zt689/article/details/37698989 1.   cloudstack4.4. ...

  6. 2016 SyScan360 国际前瞻信息安全会议 多角度探讨信息安全

    SyScan360国际前瞻信息安全会议由与中国第一大互联网安全公司-360公司与SyScan前瞻信息安全技术年会(TheSymposiumonSecurityforAsiaNetwork,以下简称Sy ...

  7. JS 正则表达式否定匹配(正向前瞻)

    引言:JS 正则表达式是 JS 学习过程中的一大难点,繁杂的匹配模式足以让人头大,不过其复杂性和其学习难度也赋予了它强大的功能.文章从 JS 正则表达式的正向前瞻说起,实现否定匹配的案例.本文适合有一 ...

  8. JUnit5 技术前瞻

    更多原创测试技术文章同步更新到微信公众号 :三国测,敬请扫码关注个人的微信号,感谢! 原文链接:http://www.cnblogs.com/zishi/p/6868495.html   JUnit ...

  9. 护航者,腾讯云: 2017年度游戏行业DDoS态势报告—回溯与前瞻

    欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 作者:腾讯游戏云 前言 自14年开始,全球DDoS攻击持续爆发,攻击峰值不断创记录.2017年,这种依靠超大流量不断冲击服务器和带宽造成业务 ...

随机推荐

  1. FCKEditor的用法(asp版)

    1:下载FCKEditor 去www.baidu.com 搜索,我本来想上传的,但不知道怎么传.下载下来后解压到你网站的目录,最好就放在根目录下,文件夹名字就用FCKEditor:这里可以随便自己喜好 ...

  2. codevs 1031 质数环

    题目描述 Description 一个大小为N(N<=17)的质数环是由1到N共N个自然数组成的一个数环,数环上每两个相邻的数字之和为质数.如下图是一个大小为6的质数环.为了方便描述,规定数环上 ...

  3. 宏定义 button 方法 --备

    定义 #define BARBUTTON(TITLE, SELECTOR) [[[UIBarButtonItem alloc] initWithTitle:TITLE style:UIBarButto ...

  4. Android修改XML文件

    最近在项目中需要使用XML记录数据,网上这方面的文章较少,记录一下 使用DOM方式 /** * 追加内容到XML文档 * @param instructions * @throws ParserCon ...

  5. webpy,希望能多了解一些关于WSGI,PYTHON的WEB开发框架的事,也希望能进一步了解PYTHON

    如果能真正看懂源代码,那就强了. 几年了,不应该总是小搞小打的. [Python]Webpy 源码学习(一) http://diaocow.iteye.com/blog/1922760 学习线路: 那 ...

  6. Android ContentProvider完整案例

    ContentData类,提供数据常量: /** * 提供ContentProvider对外的各种常量,当外部数据需要访问的时候,就可以参考这些常量操作数据. * @author HB * */ pu ...

  7. python手记(38)

    runfile(r'K:\testpro\testopencv.py', wdir=r'K:\testpro') http://blog.csdn.net/myhaspl myhaspl@qq.com ...

  8. 8.2.1.15 ORDER BY Optimization ORDER BY 优化

    8.2.1.15 ORDER BY Optimization ORDER BY 优化 在一些情况下, MySQL 可以使用一个索引来满足一个ORDER BY 子句不需要做额外的排序 index 可以用 ...

  9. 8.2.1.5 Engine Condition Pushdown Optimization 引擎条件下推优化

    8.2.1.5 Engine Condition Pushdown Optimization 引擎条件下推优化 这种优化改善了直接比较在一个非索引列和一个常量比较的效率. 在这种情况下, 条件是 下推 ...

  10. 2015第27周三Java内存模型

    自己写的代码,6个月不看也是别人的代码,自己学的知识也同样如此,学完的知识如果不使用或者不常常回顾,那么还不是自己的知识. 要认识java线程安全,必须了解两个主要的点:java的内存模型,java的 ...