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

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

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • github 工作流自动编译 ffmpeg for windows on arm
  • Python中的属性装饰器:解锁更优雅的编程之道
  • 数据结构--经典排序之选择排序(超详细!!)
  • 八、Maven总结
  • 从零开始,认识游戏设计师(4)体验源于设计师②
  • ✨机器学习笔记(一)—— 监督学习和无监督学习
  • Window下编译OpenJDK17
  • STM32CUBEIDE FreeRTOS操作教程(四):timer软件定时器
  • 代码随想录 -- 二叉树 -- 平衡二叉树
  • 类和对象的定义和调用演示(C++)
  • 项目——负载均衡OJ
  • 【Qt开发】QT6.5.3安装方法(使用国内源)亲测可行!!!
  • Prometheus与Grafana入门:从安装到基础监控的完整指南
  • 海信发布以旧换新举措,补贴力度、补贴链路、服务体验全面升级
  • 通过用例演示如何反向截取QString对象的子串
  • 【Linux系统编程】快速查找errno错误码信息
  • 【跃迁之路】【641天】程序员高效学习方法论探索系列(实验阶段398-2018.11.14)...
  • Angular 2 DI - IoC DI - 1
  • Django 博客开发教程 16 - 统计文章阅读量
  • Java 实战开发之spring、logback配置及chrome开发神器(六)
  • Javascripit类型转换比较那点事儿,双等号(==)
  • ReactNativeweexDeviceOne对比
  • Redis 中的布隆过滤器
  • springboot_database项目介绍
  • Vue 2.3、2.4 知识点小结
  • Webpack4 学习笔记 - 01:webpack的安装和简单配置
  • 从setTimeout-setInterval看JS线程
  • 如何打造100亿SDK累计覆盖量的大数据系统
  • 新版博客前端前瞻
  • 一文看透浏览器架构
  • nb
  • MiKTeX could not find the script engine ‘perl.exe‘ which is required to execute ‘latexmk‘.
  • ​sqlite3 --- SQLite 数据库 DB-API 2.0 接口模块​
  • ​软考-高级-系统架构设计师教程(清华第2版)【第9章 软件可靠性基础知识(P320~344)-思维导图】​
  • (13)[Xamarin.Android] 不同分辨率下的图片使用概论
  • (Bean工厂的后处理器入门)学习Spring的第七天
  • (java版)排序算法----【冒泡,选择,插入,希尔,快速排序,归并排序,基数排序】超详细~~
  • (二)PySpark3:SparkSQL编程
  • (附源码)node.js知识分享网站 毕业设计 202038
  • (附源码)ssm码农论坛 毕业设计 231126
  • (免费领源码)python#django#mysql校园校园宿舍管理系统84831-计算机毕业设计项目选题推荐
  • .net core webapi 大文件上传到wwwroot文件夹
  • .net mvc部分视图
  • .Net Remoting(分离服务程序实现) - Part.3
  • /bin/bash^M: bad interpreter: No such file or directory
  • @EnableWebMvc介绍和使用详细demo
  • [ 网络通信基础 ]——网络的传输介质(双绞线,光纤,标准,线序)
  • [ 云计算 | AWS ] 对比分析:Amazon SNS 与 SQS 消息服务的异同与选择
  • [AHK] WinHttpRequest.5.1报错 0x80092004 找不到对象或属性
  • [BZOJ] 2006: [NOI2010]超级钢琴
  • [bzoj1038][ZJOI2008]瞭望塔
  • [C#基础]说说lock到底锁谁?
  • [C#基础知识系列]专题十七:深入理解动态类型
  • [CR]厚云填补_SEGDNet
  • [js]- 两个对象的合并(Object.assign)