原文链接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. C++构造函数 & 拷贝构造函数 & 派生类的构造函数 & 虚继承的构造函数

    构造函数 ,是一种特殊的方法 .主要用来在创建对象时初始化对象, 即为对象成员变量赋初始值,总与new运算符一起使用在创建对象的语句中 .特别的一个类可以有多个构造函数 ,可根据其参数个数的不同或参数 ...

  2. MSP430 中断优先级

    MSP430的中断优先级.打开关闭.中断嵌套 优先级顺序从高到低为:    PORT2_VECTOR (1 * 2u) /* 0xFFE2 Port 2 */    PORT1_VECTOR (4 * ...

  3. 转:socket通信简介

    转:http://blog.csdn.net/xiaoweige207/article/details/6211577/ 我们深谙信息交流的价值,那网络中进程之间如何通信,如我们每天打开浏览器浏览网页 ...

  4. findstr 只搜寻指定文件类型

    Title:findstr 只搜寻指定文件类型 --2012-05-04 09:27 findstr /i /m /S /C:"关键字"  *.php *.asp *.jsp

  5. drawBitmapMesh方法关键参数的说明

    bitmap:指定需要扭曲的源位图.meshWidth:该参数控制在横向上把该源位图划分成多少格.meshHeight:该参数控制在纵向上把该源位图划分成多少格.verts:该参数是一个长度为(mes ...

  6. C++中对sprintf()函数的说明(转)

    在将各种类型的数据构造成字符串时,sprintf 的强大功能很少会让你失望.由于sprintf 跟printf 在用法上几乎一样,只是打印的目的地不同而已,前者打印到字符串中,后者则直接在命令行上输出 ...

  7. Linux系统编程(35)—— socket编程之TCP服务器的并发处理

    我们知道,服务器通常是要同时服务多个客户端的,如果我们运行上一篇实现的server和client之后,再开一个终端运行client试试,新的client就不能能得到服务了.因为服务器之支持一个连接. ...

  8. Day02_VI基本操作及C基础

    2013年09月30日 星期一 09时37分03秒 回顾:     1. linux系统的知识背景     2. vi的使用 在正常模式下使用nyy可以把光标所在行开始的连续n行拷贝到剪贴板上去 在正 ...

  9. 3DES加密算法

    在日常设计及开发中,为确保数据传输和数据存储的安全,可通过特定的算法,将数据明文加密成复杂的密文.目前主流加密手段大致可分为单向加密和双向加密. 单向加密:通过对数据进行摘要计算生成密文,密文不可逆推 ...

  10. jQuery -> 获取兄弟元�

    获取指定元素的兄弟元素时,能够使用adjacent sibling combinator (+),当中+的两側内容都是selector expression. 假设要获取下例中全部的 h1的直接兄弟元 ...