当前位置: 首页 > article >正文

调研-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字节

http://www.kler.cn/news/294826.html

相关文章:

  • VitePress 自定义 CSS 指南
  • docker基础命令总结
  • 流程图符号速查:快速掌握流程图绘制要点
  • Kafka【十二】消费者拉取主题分区的分配策略
  • NISP 一级 —— 考证笔记合集
  • RISC-V (十二)系统调用
  • python网络爬虫(五)——爬取天气预报
  • 风趣图解LLMs RAG的15种设计模式-第一课
  • 自然语言处理系列六十二》神经网络算法》MLP多层感知机算法
  • 【C/C++】web服务器项目开发总结【请求 | 响应 | CGI】
  • 活动系统开发之采用设计模式与非设计模式的区别-非设计模式
  • Java stream使用与执行原理
  • 通信工程学习:什么是SSB单边带调制、VSB残留边带调制、DSB抑制载波双边带调制
  • Web前端主流的框架详解
  • 基于大数据的科研热点分析与挖掘系统
  • 数学建模_数据预处理流程(全)
  • 命名空间,using声明,指令与作用域,重载与namespace
  • 智慧工地解决方案-2
  • 架构全景视图
  • lxml官方入门教程(The lxml.etree Tutorial)翻译
  • 超越IP-Adapter!阿里提出UniPortrait,可通过文本定制生成高保真的单人或多人图像。
  • 类和对象的定义和调用演示(C++)
  • CSS-动态计算高度
  • [数据集][目标检测]街道乱堆垃圾检测数据集VOC+YOLO格式94张1类别
  • ELK学习笔记(一)——使用K8S部署ElasticSearch8.15.0集群
  • Python条件表达式优化的10个实例
  • Springboot集成WebSocket客户端,发送消息并监测心跳
  • Ansible与Docker集成:实现容器化运维自动化
  • 浙大数据结构:02-线性结构1 两个有序链表序列的合并
  • [数据集][目标检测]西红柿成熟度检测数据集VOC+YOLO格式3241张5类别