libevent2源码分析之五:关键的调用链

用一个调用链来表示函数调用的流程,看起来更直观。根据上面的分析,总结了一些重要的调用链。

初始化

event_base_new

    event_base_new_with_config

        min_heap_ctor

        event_deferred_cb_queue_init

        evmap_io_initmap

        evmap_signal_initmap

        event_changelist_init

        <bind evsel>

        evsel->init[select_init]

            select_resize

            evsig_init

                evutil_socketpair

                <assign base->evsig->ev_signal

 

添加事件

event_add

    event_add_internal

        evmap_io_add

        或evmap_signal_add

        event_queue_insert

 

消息泵

event_base_dispatch

    select_dispatch[evsel->dispatch]

        select

        evmap_io_active

    event_process_active 

        event_process_active_single_queue

            (*ev->callback)(...)

 

 

 

你可能感兴趣的:(libevent)