linux queue 用法
来源:互联网 发布:python开发环境下载 编辑:程序博客网 时间:2024/06/05 20:28
Tail queue 使用例子:test1.c#include <stdio.h>#include "queue.h"#define REPEAT 500#define NOBJECTS 1000000// 在程序中如果我们想使用queue.h中提供的东西来// 简便地将自己的数据存储在队列中,就要定义如下的结构体:// 结构体中前面几项是自己的数据,最后一项是 TAILQ_ENTRY(..)...// 当然,如果最后一项根据自己选择的队列类型也可以是// SLIST_ENTRY或LIST_ENTRY或SIMPLEQ_ENTRY或CIRCLEQ_ENTRYstruct object{ char anything[7]; // 这里我们自己的数据很简单,是字符数组 TAILQ_ENTRY(object) tailq_entry;};struct object objects[NOBJECTS]; TAILQ_HEAD(,object) the_tailq; // 定义TAILQ队列头(definations)TAILQ_INIT(&the_tailq); // 初始化TAILQ队列头(functions)static void test_tailq(){ int t; puts("Testing TAILQ..."); for (t = 0; t < REPEAT; t++) { int i; for (i = 0; i < NOBJECTS; i++) { TAILQ_INSERT_TAIL(&the_tailq, objects+i, tailq_entry); } for (i = 0; i < NOBJECTS; i++) { TAILQ_REMOVE_HEAD(&the_tailq, tailq_entry); } }}int main(){ test_stailq(); return 0;}test2.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; struct QUEUE_ITEM *tmp_item; TAILQ_INIT(&queue_head); int i=0; for(i=5;i<10;i+=2){ item=malloc(sizeof(item)); item->value=i; TAILQ_INSERT_TAIL(&queue_head, item, entries); } struct QUEUE_ITEM *ins_item; ins_item=malloc(sizeof(ins_item)); ins_item->value=100; TAILQ_INSERT_BEFORE(item,ins_item,entries); tmp_item=TAILQ_FIRST(&queue_head); printf("first element is %d\n",tmp_item->value); tmp_item=TAILQ_NEXT(tmp_item,entries); printf("next element is %d\n",tmp_item->value); tmp_item=TAILQ_NEXT(tmp_item,entries); printf("next element is %d\n",tmp_item->value); tmp_item=TAILQ_NEXT(tmp_item,entries); printf("next element is %d\n",tmp_item->value); }