libevent(四)event_base 2
event_io_map
event_list是双向链表,min_heap是小根堆,那event_io_map是什么呢?
#ifdef WIN32
#define EVMAP_USE_HT
#endif #ifdef EVMAP_USE_HT
#include "ht-internal.h"
struct event_map_entry;
HT_HEAD(event_io_map, event_map_entry);
#else
#define event_io_map event_signal_map
#endif
在Linux系统中,event_io_map就是event_signal_map。
event_signal_map
struct event_signal_map {
    void **entries;    // An array of evmap_io* or of evmap_signal*
    int nentries;      // 数组大小
};
// 每个fd对应一个
struct evmap_io {
    struct event_list events;  // 存放事件的链表
    ev_uint16_t nread;      // 读事件个数
    ev_uint16_t nwrite;         // 写事件个数
};
struct evmap_signal {
    struct event_list events;
};
上一张镇楼图

可以看出,一个event_signal_map对应一个双向链表指针数组。同一个fd或signal的事件会放在同一个链表中。
(可以按照fd的值索引数据)
activequeues
对应一个双向链表数组,同一优先级的事件位于同一个链表中。数组大小初始为1。
libevent(四)event_base 2的更多相关文章
- libevent之event_base
		event_base是libevent的事务处理框架,负责事件注册.删除等,属于Reactor模式中的Reactor. event_base结构体 event_base结构体定义于<event_ ... 
- libevent(三)event_base
		libevent能够处理三种事件: I/O.定时器.信号. event_base 统一管理所有事件. struct event_base { const struct eventop *evsel; ... 
- libevent源码深度剖析
		原文地址: http://blog.csdn.net/sparkliang/article/details/4957667 第一章 1,前言 Libevent是一个轻量级的开源高性能网络库,使用者众多 ... 
- libevent源码剖析
		libevent是一个使用C语言编写的,轻量级的开源高性能网络库,使用者很多,研究者也很多.由于代码简洁,设计思想简明巧妙,因此很适合用来学习,提升自己C语言的能力. libevent有这样显著地几个 ... 
- libevent网络编程汇总
		libevent源码剖析: ========================================================== 1.libevent源码剖析一(序) 2.libeve ... 
- libevent 源码分析
		1,前言 Libevent是一个轻量级的开源高性能网络库,使用者众多,研究者更甚,相关文章也不少.写这一系列文章的用意在于,一则分享心得:二则对libevent代码和设计思想做系统的.更深层次的分析, ... 
- libevent入门教程
		首先给出官方文档吧: http://libevent.org ,首页有个Programming with Libevent,里面是一节一节的介绍libevent,但是感觉信息量太大了,而且还是英文的- ... 
- Libevent源码分析—event_init()
		下面开始看初始化event_base结构的相关函数.相关源码位于event.c event_init() 首先调用event_init()初始化event_base结构体 struct event_b ... 
- libevent(了解)
		1 前言 Libevent是一个轻量级的开源高性能网络库,使用者众多,研究者更甚,相关文章也不少.写这一系列文章的用意在于,一则分享心得:二则对libevent代码和设计思想做系统的.更深层次的分析, ... 
随机推荐
- 9.2ArrayList 集合 案例,学生管理系统
			循环的使用 添加学生:while嵌套for,for设置变量,内嵌if更新变量.if语句判断变量值 修改学生:for循环内嵌if,获取循环中的某个值. package day9_ArrayList.AL ... 
- 修改Sysvol复制方式
			最近博主在做公司的AD系统升级,首先在做AD系统升级前,一定要认真的调研!!!!在调研是否可升级的过程中 博主发现我司SYSVOL的复制方式还是FRS(没升级前公司是Windows server 20 ... 
- 【python实现卷积神经网络】Flatten层实现
			代码来源:https://github.com/eriklindernoren/ML-From-Scratch 卷积神经网络中卷积层Conv2D(带stride.padding)的具体实现:https ... 
- redis集群搭建-3.0/4.0版本
			1. Redis的安装 1.1. Redis的安装 Redis是c语言开发的. 安装redis需要c语言的编译环境.如果没有gcc需要在线安装.yum install gcc-c++ 安装步骤: 第 ... 
- AJ学IOS(36)UI之手势事件旋转_缩放_拖拽
			AJ分享,必须精品 效果 完成一个图片的捏合缩放,拖拽,旋转动作. 设计思路 拖拽: 首先是最简单的拖拽 //拖拽 -(void)panTest { UIPanGestureRecognizer *p ... 
- 曹工说Redis源码(6)-- redis server 主循环大体流程解析
			文章导航 Redis源码系列的初衷,是帮助我们更好地理解Redis,更懂Redis,而怎么才能懂,光看是不够的,建议跟着下面的这一篇,把环境搭建起来,后续可以自己阅读源码,或者跟着我这边一起阅读.由于 ... 
- bfs和dfs辨析—基础复习(从stack和queue的角度来理解区别,加深理解,不再模糊)
			参考: https://www.cnblogs.com/Tovi/articles/6194815.html https://blog.csdn.net/dangzhangjing97/article ... 
- SVG 案例:动态去创建分支节点,当鼠标经过某个节点时,分支线会高亮
			css: <style> #div1{ width:780px; height:400px; background:#fff; margin:20px auto; overflow:hid ... 
- Git敏捷开发--常用别名
			前言 在Unix下终端开发时,经常会搭配 oh-my-zsh 来使用. oh-my-zsh 中默认内置 git 插件,且支持许多 git alias 的命令,这里对常见的命令进行总结,以供查阅. 常用 ... 
- Java数组 —— 八大排序
			(请观看本人博文--<详解 普通数组 -- Arrays类 与 浅克隆>) 在本人<数据结构与算法>专栏的讲解中,本人讲解了如何去实现数组的八大排序. 但是,在讲解的过程中,我 ... 
