04 2019 档案
摘要:前言 : 这一节将分析如何将 Signal 集成到事件主循环的框架中 1 集成策略——使用 socket pair a 开始 b 创建监听 socket c 绑定本地回环地址, 开始监听本地连接 d 创建一个连接 socket——sock1 e 调用 connect()连接到监听 socket 监听
阅读全文
摘要:前言 : 事件主循环是 libevent 事件处理的中心部分 1 事件处理主循环 a 开始 b 如果发现系统时间被向后调整了,就校正系统时间 c 根据 timer heap 中 event 的最小超时时间计算系统 I/O demultiplexer 的最大等待时间 d 更新 last wait ti
阅读全文
摘要:前言 :Reactor 模型的框架组件 event_base 结构体, 位于 event-internal.h 文件中 1. 结构体定义与解释 struct event_base { const struct eventop *evsel; void *evbase; int event_count
阅读全文
摘要:前言 : event 是 libevent 的核心结构。 1. libevent 的核心 —— event libevent 是基于事件驱动的,event 是 Reactor 框架中的事件处理程序组件;它提供了函数接口,供 Reactor 在事件发生时调用以执行相应的事件处理,通常会绑定一个有效的句
阅读全文
摘要:前言 : 详细分析源代码之前,应该对其代码文件的基本结构有个大概的认识和分类。 源代码组织结构: libevent源代码主要可分为:头文件、内部使用的头文件、辅助功能函数、日志、libevent框架、对系统 I/O 多路复用机制的封装、信号管理、定时事件管理、缓冲区管理、基本数据结构和基于 libe
阅读全文
摘要:基本应用场景——libevent 基本流程 eg: 使用 libevent 设置定时器。 1. 初始化 libevent 库,并保存返回的指针 struct event_base* base = event_init(); // 初始化后,就可以注册事件了 2. 初始化事件 event,设置回调函数
阅读全文
摘要:1. 简介:Reactor : 反应堆模型, 一种事件驱动方式。 2. 优点 a 响应快,不必为单个同步时间所阻塞。(Reactor 本身是同步的) b 编程相对简单,可以最大程度的避免复杂的多线程和同步问题,避免了多线程/进程的切换开销 c 可扩展性, 可以方便的通过增加Reactor实例个数来充
阅读全文
摘要:前言: 准备开始学习 C++ 的一些优秀开源代码库。以此来记录自己学习 libevent 的过程和重点。 第一章: libevent 库简介 1. 轻量级开源高性能网络库 2. C语言编写 3. 事件驱动,高性能 4. 跨平台 5. 支持多种 I/O 多路复用技术 epoll poll dev/po
阅读全文