libevent(四)event_base 2

接上文libevent(三)event_base

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。

转载于:https://www.cnblogs.com/gattaca/p/7681263.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值