zoukankan      html  css  js  c++  java
  • 概念理解-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,除非是进行加密通信.
  • 相关阅读:
    MySql错误解决方案汇总
    不适合做管理的人zz
    linux 自动执行 crontab学习笔记
    Google Megastore分布式存储技术全揭秘zz
    【算法】n个人围成一圈报数,报到3的退出,下面接着从1开始报,问最后剩下的是谁?
    大数据下的数据分析平台架构zz
    ETL的可扩展性和可维护性zz
    【算法】各种排序算法测试代码
    谈爱情故事,谈观察者模式
    解读设计模式单例模式(Singleton Pattern)
  • 原文地址:https://www.cnblogs.com/osbreak/p/9998538.html
Copyright © 2011-2022 走看看