Libevent的使用及reactor模型

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

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

cpp 复制代码
  // 创建框架  
  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),事件处理程序理解为回调函数。

相关推荐
zs宝来了2 天前
Netty Reactor 模型:Boss、Worker 与 EventLoop
reactor·netty·源码解析·线程模型·eventloop
李庆政3705 天前
Reactor-core 响应式编程 spring-boot-starter-webflux
java·spring boot·reactor·响应式编程·reactor-core
Trouvaille ~12 天前
【项目篇】从零手写高并发服务器(十):性能测试与项目总结
linux·运维·c++·reactor·性能测试·高并发服务器·webbench
Trouvaille ~13 天前
【项目篇】从零手写高并发服务器(七):定时器TimerWheel与线程池
运维·服务器·网络·c++·reactor·高并发·muduo库
cccyi716 天前
支持 HTTP 协议的主从 Reactor 高性能服务器组件
服务器·http·reactor
cccyi720 天前
仿 muduo 库 one thread one loop 式并发服务器实现
reactor
Trouvaille ~20 天前
【项目篇】从零手写高并发服务器(五):Channel事件管理与Poller模块
运维·服务器·c++·reactor·高并发·多路转接·epoll
Thomas.Sir1 个月前
深入剖析 Reactor 多线程模型
性能优化·reactor·多线程·proactor
tod1132 个月前
Reactor反应堆模式
网络·网络协议·tcp/ip·reactor·多路转接·tcpdump
带刺的坐椅2 个月前
赋予 AI Agent “无限续航”:语义保护型上下文压缩技术解析
ai·llm·reactor·agent·solon·solon-ai