用一个调用链来表示函数调用的流程,看起来更直观。根据上面的分析,总结了一些重要的调用链。
初始化
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)(...)