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);    }  

原创粉丝点击