在libuv中,当事件发生时,对应的回调函数是通过事件循环机制被调用的。事件循环是libuv的核心,它负责监听、管理和调度各种异步事件。以下是事件循环如何调用回调函数的简要说明:
1. 事件监听:
首先,当初始化libuv的事件循环时,可以向事件循环注册各种类型的句柄(handles),如TCP、UDP、文件系统、定时器等。每个句柄都可以关联一个或多个回调函数,用于处理特定的事件。
#define uv__handle_init(loop_, h, type_) \
do { \
(h)->loop = (loop_); \
(h)->type = (type_); \
(h)->flags = UV_HANDLE_REF; /* Ref the loop when active. */ \
uv__queue_insert_tail(&(loop_)->handle_queue, &(h)->handle_queue); \
uv__handle_platform_init(h); \
}