libevent数据结构——TAILQ_结构体

TAILQ_结构体

TAILQ_结构体在文件event2/event_struct.h和文件event2/keyvalq_struct.h中都有定义,并且他们的定义都是一样的,定义了TAILQ_ENTRY、TAILQ_HEAD结构体:

c 复制代码
#ifndef TAILQ_ENTRY
#define EVENT_DEFINED_TQENTRY_
#define TAILQ_ENTRY(type)						\
struct {								\
	struct type *tqe_next;	/* next element */			\
	struct type **tqe_prev;	/* address of previous next element */	\
}
#endif /* !TAILQ_ENTRY */

#ifndef TAILQ_HEAD
#define EVENT_DEFINED_TQHEAD_
#define TAILQ_HEAD(name, type)			\
struct name {					\
	struct type *tqh_first;			\
	struct type **tqh_last;			\
}
#endif

同时,我们还发现在include 的同级目录下有一个compat/sys/queue.h中也定义了TAILQ_相关的结构体,并且还定义了一些相关的操作宏,这个放到以后说。

由这两个结构体配合构造出来的队列一般如下图所示:

图中,一级指针指向的是queue_entry_t这个结构体,即存储queue_entry_t这个结构体的地址值。二级指针存储的是一级地址变量的地址值。所以二级指针指向的是图中的一级指针,而非结构体。图中的1,2, 3为队列元素保存的一些值。

队列操作宏函数以及使用例子

这部分似乎只是在libevent内部使用(文件compat/sys/queue.hevent-internal.h中),并没有导出来。

相关推荐
小唔w10 分钟前
武汉外籍人员子女学校择校观察:枫叶教育信息整理
学习
for_ever_love__12 分钟前
python基础语法学习: 装饰器
python·学习·装饰器·装饰器模式
狂云歌15 分钟前
AI学习之function calling&mcp
人工智能·学习·ai·ai编程
FAREWELL0007522 分钟前
学习笔记-热更新导航
笔记·学习
wuhuhuan26 分钟前
【JMeter 学习打卡 Day 7】从会用到会用对,完成一次完整压测
学习·jmeter
tju新生代魔迷33 分钟前
Python学习日记2
python·学习
mlidongfeng44 分钟前
[AI][昇腾950]TA 学习
数据库·学习
ヾChen1 小时前
ESP32 OTA 踩坑实录
stm32·单片机·嵌入式硬件·物联网·学习
云半S一2 小时前
Python学习总结
python·学习·学习分享
科信集团3 小时前
政策科普|广东省绿色制造体系全解读
学习·制造·绿色