概念理解-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,除非是进行加密通信.
原文地址:https://www.cnblogs.com/osbreak/p/9998538.html