TAILQ队列分析.docx

  1. 1、本文档共9页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
TAILQ队列分析

javascript:;Linux queue.h之TAILQ队列分析 (2012-03-12 11:13) /space.php?uido=tag标签:? /space.php?uido=tagid=7987转载 分类: /space.php?uido=blogfrmd=0classid=151118view=me转载一些有用的文章 原文地址:/uidid-93932.htmlLinux queue.h之TAILQ队列分析 作者:/uidhtmlhunaiquan这两天想看看memcached的实现,所以先学习了libevent,使用起来还是比较简单的,其实是对select/poll/kqueue等的封装,学习libevent过程中又遇到了linux下队列的使用,简单分析如下,权当做记录: libevent中的例子中使用的是FreeBSD下的queue.h,在linux的/usr/include/sys/queue.h也有该头文件,但是是一个缩减版本,而且没有看到queue 的access method,不知道是不是跟我们的linux服务器版本有关,没办法google了一下,找到了FreeBSD 下queue.h的定义,我们看一下tail queue的定义 C代码 #define?TAILQ_HEAD(name,?type)??????????????\ struct?name?{???????????????????????\?struct?type?*tqh_first;?/*?first?element?*/?\?struct?type?**tqh_last;?/*?addr?of?last?next?element?*/\} #define?TAILQ_ENTRY(type)???????????????????\ struct?{????????????????????????????\?struct?type?*tqe_next;??/*?next?element?*/?\?struct?type?**tqe_prev;/*?addr?of?previous?next?element*/?\} #define?TAILQ_INIT(head)?do?{???????????????\ ?(head)-tqh_first?=?NULL;????????????????\?(head)-tqh_last?=?(head)-tqh_first;????????\}?while?(0) #define?TAILQ_INSERT_TAIL(head,?elm,?field)?do?{????????\ ?(elm)-field.tqe_next?=?NULL;????????????\?(elm)-field.tqe_prev?=?(head)-tqh_last;?????\?*(head)-tqh_last?=?(elm);???????????????\?(head)-tqh_last?=?(elm)-field.tqe_next;????????\}?while?(0) #define?TAILQ_INSERT_BEFORE(listelm,?elm,?field)?do?{???????\ ?(elm)-field.tqe_prev?=?(listelm)-field.tqe_prev;????\?(elm)-field.tqe_next?=?(listelm);???????????\?*(listelm)-field.tqe_prev?=?(elm);??????????\?(listelm)-field.tqe_prev?=?(elm)-field.tqe_next;???\}?while?(0)#define?TAILQ_FIRST(head)???????((head)-tqh_first) #define?TAILQ_NEXT(elm,?field)??????((elm)-field.tqe_next) ....??我们就先分析上面的这些定义,先看个应用的例子 C代码 #include?stdio.h #include?stdlib.h #include?queue.h struct?QUEUE_ITEM{?int?value;?TAILQ_ENTRY(QUEUE_ITEM)?entries;};TAILQ_HEAD(,QUEUE_ITEM)?queue_head;int?main(int?argc,char?**argv){?struct?QUEUE_ITEM?*item;?s

文档评论(0)

xcs88858 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档