Libevent的使用及reactor模型详解

 更新时间:2024年03月07日 11:34:08   作者:一只特立独行的猪( ﹡ˆoˆ﹡  
Libevent 是一个用C语言编写的、轻量级的开源高性能事件通知库,主要有以下几个亮点:事件驱动( event-driven),高性能;轻量级,专注于网络,这篇文章主要介绍了Libevent的使用及reactor模型,需要的朋友可以参考下

Libevent 是一个用C语言编写的、轻量级的开源高性能事件通知库,主要有以下几个亮点:事件驱动( event-driven),高性能;轻量级,专注于网络,不如 ACE 那么臃肿庞大;源代码相当精炼、易读;跨平台,支持 Windows、 Linux、 *BSD 和 Mac Os;支持多种 I/O 多路复用技术, epoll、 poll、 dev/poll、 select 和 kqueue 等;支持 I/O,定时器和信号等事件;注册事件优先级。

libevent的流程可以分为三步:定义框架,注册事件,启动事件循环(epoll检测事件是否发生,发生的时候,通知子线程调用回调函数//此过程会阻塞)下图为编写的框架

  // 创建框架  
  struct event_base* base = NULL;
    base = event_base_new();
// 添加事件
    struct event* ev = NULL;
    ev = event_new(base, fd, EV_READ | EV_PERSIST, read_cb, NULL);
    event_add(ev, NULL);
    // 事件循环
    event_base_dispatch(base);
    // 释放资源
    event_free(ev);
    event_base_free(base);
    close(fd);
    return 0;
}
 

 Reactor:事件源(描述符)、Reactor 框架、多路复用机制和事件处理程序

事件源可以理解为我们的文件描述符,多路复用机制是我们的IO模型(select,poll,epoll),事件处理程序理解为回调函数。

到此这篇关于Libevent的使用及reactor模型的文章就介绍到这了,更多相关Libevent reactor模型内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 详解C/C++高精度(加减乘除)算法中的压位优化

    详解C/C++高精度(加减乘除)算法中的压位优化

    在高精度计算中数组的每个元素存储一位10进制的数字,这样的存储方式并不是最优的,32位的整型其实至少可以存储9位高精度数字,数组元素存储更多的位数就是压位优化。本文将展示压位优化的原理以及压9位的实现和性能对比,需要的可以参考一下
    2023-01-01
  • C++ 名称空间详情

    C++ 名称空间详情

    当一个项目变得大型之后,我们会引入很多的库,这么一来两个库很可能会定义List、Tree、Node同名的类,编译器要是不考虑这情况的话,程序员调用时就会出现冲突问题。C++提供了名称空间工具,以更好的控制名称的作用域,本文就来谈谈C++ 名称空间,需要的朋友可以参考一下
    2021-09-09
  • 详解C++编程中数组的基本用法

    详解C++编程中数组的基本用法

    这篇文章主要介绍了C++编程中数组的基本用法,包括数组的初始化等基本知识,需要的朋友可以参考下
    2016-01-01
  • 关于c语言指针的两处小tip分享

    关于c语言指针的两处小tip分享

    本篇文章是对c语言中指针的两处小tip进行了详细的分析介绍,需要的朋友参考下
    2013-05-05
  • C++与Lua交互内存分配详解

    C++与Lua交互内存分配详解

    C/C++ 与 Lua 的交互是通过 lua_State 这一句柄进行交互,我们常规的创建都是通过 luaL_newstate 这一辅助函数,这篇文章主要给大家详细介绍了C++与Lua交互内存分配,文中有相关的代码示例供大家参考,需要的朋友可以参考下
    2023-11-11
  • C++解密Chrome80版本数据库的方法示例代码

    C++解密Chrome80版本数据库的方法示例代码

    这篇文章主要介绍了C++解密Chrome80版本数据库的方法示例代码,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-05-05
  • C语言零基础入门(2)

    C语言零基础入门(2)

    这篇文章主要为大家详细介绍了C语言零基础入门的方法,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
    2022-03-03
  • 浅析C++中前置声明的应用与陷阱

    浅析C++中前置声明的应用与陷阱

    以下是对C++中前置声明的应用与陷阱进行了详细的分析介绍,需要的朋友参考下
    2013-07-07
  • C/C++实现Windows注册表的基本操作

    C/C++实现Windows注册表的基本操作

    Windows注册表(Registry)是Windows操作系统中用于存储系统配置信息、用户设置和应用程序数据的一个集中式数据库,本文主要为大家介绍了C++对注册表的基本操作,感兴趣的小伙伴可以了解下
    2023-11-11
  • C++ sqlite3数据库配置使用教程

    C++ sqlite3数据库配置使用教程

    SQLite 是一种嵌入式的关系型数据库管理系统,它是一个开源项目,已经被广泛应用于各种应用程序和操作系统中,这篇文章主要介绍了C++ sqlite3数据库配置使用,需要的朋友可以参考下
    2023-08-08

最新评论