概念理解-Libevent

Posted osbreak

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了概念理解-Libevent相关的知识,希望对你有一定的参考价值。

 

可移植性:
  使用 LibEvent 编写的程序应该在 LibEvent 支持跨越的所有平台上工作,即使没有更好的方法来处理。
  非阻塞式IO:LibEvent也应该支持一般的方法使程序可以运行在某些限制的环境中. 速度:   LibEvent 试图在每一个平台实现最快的非阻塞式 IO,而不会引入太多的额外开销. ? 可扩展性:   LibEvent 设计为即使在成千上万的 socket 情况下也能良好工作. ? 方便: 无论在什么情况下,用 LibEvent 来编写程序最自然的方式都应该是稳定可靠的.

 

 

LibEvent 由下列组件构成: ?
  evutil:用于抽象出不同平台网络实现的通用功能. ?
  eventandevent_base:libevent 的核心,为各种平台特定的、基于事件的非阻塞IO后端提供抽象 API,
      让程序可以知道套接字何时已经准备好,可以读或者写,并且处理基本的超时功能,检测OS信号. ?   eufferevent:为libevent 基于事件的核心提供使用更方便的封装.除了通知程序套接字已经准备好读写之外,还让程序可以请求缓冲的读写操作,可以知道何时IO已经真正发生.
    (bufferevent 接口有多个后端,可以采用系统能够 提供的更快的非阻塞IO方式 ,如Windows 中的 IOCP) ?   evbuffer:在bufferevent 层之下实现了缓冲功能,并且提供了方便有效的访问函数. ?   evhttp:一个简单的HTTP 客户端
/服务器实现. ?   evdns:一个简单的DNS 客户端/服务器实现. ?   evrpc:一个简单的RPC 实现.

 

创建libevent 时,默认安装下列库: ? 
  libevent_core:所有核心的事件和缓冲功能,包含了所有的event_base、evbuffer、bufferevent 和工具函数. 
? libevent_extra:定义了程序可能需要,也可能不需要的协议特定功能,包括HTTP、DNS和RPC. 
? libevent:这个库因为历史原因而存在,它包含 libevent_core 和 libevent_extra 的内容 .不应该使用这个库未来版本的libevent。可能去掉这个库.
某些平台上可能安装下列库: ?
  libevent_pthreads:添加基于 pthread可移植线程库的线程和锁定实现.它独立于libevent_core,这样程序使用 libevent 时就不需要链接到 pthread,
  除非是以多线程方式使用libevent. ?   libevent_openssl:这个库为使用 bufferevent 和 OpenSSL 进行加密的通信提供支持。
  它独立于 libevent_core,这样 程序使用libevent 时就不需要链接到 OpenSSL,除非是进行加密通信.

 






以上是关于概念理解-Libevent的主要内容,如果未能解决你的问题,请参考以下文章

Linux C编程之十九 libevent基本概念

libevent简述

看了这么多天后对libevent的理解

libevent & bufferevent

金蝶handler中 collection 代码片段理解

调用模板化成员函数:帮助我理解另一个 *** 帖子中的代码片段