从链表中取出事件并处理
//取出链表中取出第一个节点(ngx_queue_t),然后获取该节点所属对象的完整对象(ngx_event_t)并调用与其绑定的方法处理该对象(事件)
void
ngx_event_process_posted(ngx_cycle_t *cycle, ngx_queue_t *posted)
{
ngx_queue_t *q;
ngx_event_t *ev;
//从链表中依次获取节点对象,并处理
while (!ngx_queue_empty(posted)) {
//获取链表首元素
¦ q = ngx_queue_head(posted);
//获取链表节点所属的对象实例
¦ ev = ngx_queue_data(q, ngx_event_t, queue);
¦ ngx_log_debug1(NGX_LOG_DEBUG_EVENT, cycle->log, 0,
¦ ¦ ¦ ¦ ¦ "posted event %p", ev);
//从链表中删除该节点
¦ ngx_delete_posted_event(ev);
//使用绑定的handler处理该事件
¦ ev->handler(ev);
}
}