ngx_queue_t
来源:互联网 发布:windows snmp v3配置 编辑:程序博客网 时间:2024/05/13 07:31
/* * Copyright (C) Igor Sysoev * Copyright (C) Nginx, Inc. */#include <ngx_config.h>#include <ngx_core.h>#ifndef _NGX_QUEUE_H_INCLUDED_#define _NGX_QUEUE_H_INCLUDED_typedef struct ngx_queue_s ngx_queue_t;struct ngx_queue_s { ngx_queue_t *prev; ngx_queue_t *next;};//初始化一个已有的链表#define ngx_queue_init(q) \ (q)->prev = q; \ (q)->next = q//判断链表是否为空#define ngx_queue_empty(h) \ (h == (h)->prev)//在链表的头部插入元素 x#define ngx_queue_insert_head(h, x) \ (x)->next = (h)->next; \ (x)->next->prev = x; \ (x)->prev = h; \ (h)->next = x//在链表的头部插入#define ngx_queue_insert_after ngx_queue_insert_head//在链表的尾部插入#define ngx_queue_insert_tail(h, x) \ (x)->prev = (h)->prev; \ (x)->prev->next = x; \ (x)->next = h; \ (h)->prev = x//访问链表的第一个元素#define ngx_queue_head(h) \ (h)->next//访问链表的最后一个元素#define ngx_queue_last(h) \ (h)->prev//获取链表的头#define ngx_queue_sentinel(h) \ (h)//访问q的下一个元素#define ngx_queue_next(q) \ (q)->next//访问q的前一个节点#define ngx_queue_prev(q) \ (q)->prev#if (NGX_DEBUG)#define ngx_queue_remove(x) \ (x)->next->prev = (x)->prev; \ (x)->prev->next = (x)->next; \ (x)->prev = NULL; \ (x)->next = NULL#else//删除连表中的x节点 这里只有调试版本才制空 //nginx真心是做的一个多余的操作都不要#define ngx_queue_remove(x) \ (x)->next->prev = (x)->prev; \ (x)->prev->next = (x)->next#endif//把链表h 拆分成 h、n 两个链表 //其中 h:q元素之前的元素(不含q) n:q开始之后的元素(包含q)#define ngx_queue_split(h, q, n) \ (n)->prev = (h)->prev; \ (n)->prev->next = n; \ (n)->next = q; \ (h)->prev = (q)->prev; \ (h)->prev->next = h; \ (q)->prev = n;//把n链表拼接到h链表的后面s#define ngx_queue_add(h, n) \ (h)->prev->next = (n)->next; \ (n)->next->prev = (h)->prev; \ (h)->prev = (n)->prev; \ (h)->prev->next = h;//获取q所在对象的地址,这种写法真心牛X,长知识了#define ngx_queue_data(q, type, link) \ (type *) ((u_char *) q - offsetof(type, link))//取连表中的中间节点 (size/2 + 1)ngx_queue_t *ngx_queue_middle(ngx_queue_t *queue);//按照cmp函数对链表进行排序 //这里用的是插入排序,数据两大的情况下不建议使用void ngx_queue_sort(ngx_queue_t *queue, ngx_int_t (*cmp)(const ngx_queue_t *, const ngx_queue_t *));#endif /* _NGX_QUEUE_H_INCLUDED_ */
0 0
- ngx_queue_t
- ngx_queue_t
- Nginx 数据结构 ngx_queue_t
- ngx_queue_t双向链表
- nginx数据结构ngx_queue_t
- Nginx基本数据结构之ngx_queue_t
- nginx双向链表ngx_queue_t
- Nginx数据结构——ngx_queue_t
- Nginx源码分析之ngx_queue_t
- Nginx源码阅读(ngx_queue_t)
- nginx源码分析—队列结构ngx_queue_t
- Nginx源码分析---队列结构ngx_queue_t
- nginx源码分析—队列结构ngx_queue_t
- nginx源码分析—队列结构ngx_queue_t
- nginx 源码学习(四) 基本数据结构 ngx_queue_t
- ngx源码分析--数据结构 队列ngx_queue_t
- nginx双向队列ngx_queue_t使用例子
- Nginx 队列双向链表结构 ngx_queue_t
- 图片压缩旋转大全(质量压缩,比列压缩)
- Farey Sequence
- 2016蓝桥杯假期任务之《十六进制转八进制》
- 为什么已经引用了命名空间的情况下仍不能调用其中的类
- U盘路径,SD卡路径
- ngx_queue_t
- QML中的ECMAscript
- 探究ArrayList 和Map 的读取和插入效率
- Raising Modulo Numbers
- css实现水平居中的方法
- quote symbol expected
- Unexpected internal error near index 1
- QML中信号槽机制的使用
- ASP.NET MVC3实战系列(一):简单示例