声明:本文为原创博文,转载请注明出处。
在libuv中,有一个只使用简单的宏封装成的高效队列(queue),现在我们就来看一下它是怎么实现的。
首先,看一下queue中最基本的几个宏:
1 typedef void *QUEUE[2];2 3 /* Private macros. */4 #define QUEUE_NEXT(q) (*(QUEUE **) &((*(q))[0]))5 #define QUEUE_PREV(q) (*(QUEUE **) &((*(q))[1]))6 #define QUEUE_PREV_NEXT(q) (QUEUE_NEXT(QUEUE_PREV(q)))7 #define QUEUE_NEXT_PREV(q) (QUEUE_PREV(QUEUE_NEXT(q)))
首先,QUEUE被声明成一个"具有两个char*元素的指针数组",如下图:
延伸阅读
- ssh框架 2016-09-30
- 阿里移动安全 [无线安全]玩转无线电——不安全的蓝牙锁 2017-07-26
- 消息队列NetMQ 原理分析4-Socket、Session、Option和Pipe 2024-03-26
- Selective Search for Object Recognition 论文笔记【图片目标分割】 2017-07-26
- 词向量-LRWE模型-更好地识别反义词同义词 2017-07-26
- 从栈不平衡问题 理解 calling convention 2017-07-26
- php imagemagick 处理 图片剪切、压缩、合并、插入文本、背景色透明 2017-07-26
- Swift实现JSON转Model - HandyJSON使用讲解 2017-07-26
- 阿里移动安全 Android端恶意锁屏勒索应用分析 2017-07-26
- 集合结合数据结构来看看(二) 2017-07-26
学习是年轻人改变自己的最好方式
