• 概念理解-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,除非是进行加密通信.
  • 相关阅读:
    C++ 如何重复利用一个内存地址块
    C与C++在const用法上的区别
    C++ 与设计模式学习(其一)
    C/C++ 关于生成静态库(lib)/动态库(dll)文件如何使用(基于windows基础篇)
    c/c++----网站及其后门(CGI应用程序)
    C/C++深度copy和浅copy
    C/C++ 一段代码区分数组指针|指针数组|函数指针|函数指针数组
    C/C++ 如何劫持别人家的命令||函数||程序(只能对于window而言)
    C++继承与派生(原理归纳)
    Linux下如何查看自己的服务器有没有无线网卡
  • 原文地址:https://www.cnblogs.com/osbreak/p/9998538.html
Copyright © 2020-2023  润新知