欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 教育 > 锐评 > 调研-libevent

调研-libevent

2024/10/24 13:31:56 来源:https://blog.csdn.net/qq_43447401/article/details/142006382  浏览:    关键词:调研-libevent

基础概念

  • 官网:
    • libevent API提供一种机制,可以在以下情况下执行回调
      • fd上出现具体事件、超时时间到达后、支持信号、定期超时产生的回调。
    • libevent 旨在取代 事件驱动的网络服务器中的事件循环,程序只需要调用event_dispatch,然后动态添加或删除事件,无需更改事件循环。
      • 支持 可移植应用程序开发、提供可扩展的事件通知机制、支持多线程。
    • libevent为缓存网络IO提供 复杂框架,支持socket、过滤器、速率限制、SSL、零拷贝文件传输和IOCP。
  • libevent:C实现的异步事件库,支持注册异步事件、检测异步事件以及根据事件的触发先后顺序来调用相应的回调函数。
    • 事件类型:
      • 网络IO事件:如Linux中的epoll等IO多路复用
      • 定时事件:红黑树、最小堆、跳表
      • 信号事件:

主要内容

组件

event

  • 表示单个具体事件,包括事件类型、事件回调等。
  • 事件类型:
    • IO事件:fd可读就绪、可写就绪、发生异常。
    • 定时器事件:在指定时间间隔后触发。
    • 信号事件:当特定信号发生时触发。
    • 持续事件:定期触发,执行周期性任务。

event_base

  • 用于管理所有事件,负责事件的添加、删除和分发。

buffer

  • 提供缓冲区操作,用于网络数据的读写。

evbuffer

  • 提供增强的缓冲区操作,支持链式缓冲区。

bufferevent

  • 基于buffer和evbuffer的更高层次的抽象,用于简化网络数据的读写。
  • 水位/阈值:缓冲区中数据量到达一定阈值触发相应事件。
    • 以TCP连接事件为例,设置读阈值=1024字节,当接收数据>=1024时,bufferevent处于可读状态并触发读事件。
    • 同样设置写阈值=4096字节

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com