nginx中的每个工作进程都有一个已发布的事件队列。 ngx_event_t有两个指针,next和prev:
/* the links of the posted queue */
ngx_event_t *next;
ngx_event_t **prev;
nginx使用这两个指针实现发布的事件队列,下一个指向下一个事件,prev指向前一个事件的下一个指针。 后期操作:
ev->next = (ngx_event_t *) *queue;
ev->prev = (ngx_event_t **) queue;
*queue = ev;
if (ev->next) {
ev->next->prev = &ev->next;
}
删除操作:
*(ev->prev) = ev->next;
if (ev->next) {
ev->next->prev = ev->prev;
}
为什么prev使用两级指针类型?有什么好处?
答案 0 :(得分:0)
指针的级别取决于您如何访问存储在指针变量中的内存地址。如果要从指针引用它,则需要单指针。如果要从指针指向指针,则需要双指针,依此类推。在你的情况下,你从指针指针取消引用它,这就是你需要双指针的原因。