zoukankan      html  css  js  c++  java
  • 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。

  • 相关阅读:
    Title
    Title
    Title
    Title
    Title
    Title
    Title
    get和post两种表单提交方式的区别
    计算机网络体系结构补充内容
    计算机网络体系结构作业题整理-第十章答案
  • 原文地址:https://www.cnblogs.com/gattaca/p/7681263.html
Copyright © 2011-2022 走看看