Heim >Backend-Entwicklung >PHP-Tutorial >Nginx doppelt verknüpfte Liste ngx_queue_t

Nginx doppelt verknüpfte Liste ngx_queue_t

WBOY
WBOYOriginal
2016-08-08 09:23:291321Durchsuche

1. Einführung

ngx_queue_t ist eine in nginx implementierte doppelt verknüpfte Liste. Betten Sie ngx_queue_t einfach in die benutzerdefinierte Struktur ein, in der Sie die doppelt verknüpfte Liste verwenden möchten. Ein weiteres Merkmal ist, dass ngx_queue_t keine Speicherzuweisung beinhaltet.

2. Beispiele

Der folgende Quellcode integriert den Quellcode zu ngx_queue_t in Kapitel 7 von „Detailliertes Verständnis von Nginx“. Makefile bezieht sich auf http://blog.csdn.net/livelylittlefish/article/details/6586946.

#include

#include "ngx_config.h"

#include "ngx_conf_file.h"

#include "nginx .h"

#include "ngx_core.h"

#include "ngx_string.h"

#include "ngx_palloc.h"

#include ngx_queue.h

{

}

typedef struct {

u_char*str;

ngx_queue_tqEle;

intnum;

}TestNode;

ngx_int_t compTestNode(const ngx_queue_t*a, const ngx_queue_t *b)

{

TestNode*aNode = ngx_queue_data(a, TestNode, qEle);

TestNode*bNode = ngx_queue_data(b, TestNode, qEle);

returnaNode->num > bNode->num;

}

int main()

{

ngx_queue_tqueueContainer;

ngx_queue_init(&queueContainer);

inti = 0;

TestNodenode[5];

 

for(; i < 5; ++ i) {

node[i].num= i;

}

ngx_queue_insert_tail(&queueContainer,&node[0].qEle); ngx_queue_insert_head(&queueContainer,&node[1].qEle );

ngx_queue_insert_tail(&queueContainer,&node[2].qEle);

ngx_queue_insert_after(&queueContainer,&node[3].qEle);

ngx_queue_insert_tail(&queueContainer,&node[4] .qEle);<🎜. >

                                                                        ueContainer);

q = ngx_queue_next(q)) {

TestNode*eleNode = ngx_queue_data(q, TestNode, qEle);

printf("%dn",eleNode->num);

);

for(q = ngx_queue_head(&queueContainer);

                                     _next(q)) {

TestNode*eleNode = ngx_ queue_data(q, TestNode, qEle );

printf("%dn",eleNode->num);

                                                         

        return0;

}

Makefile

CXX = gcc

CXXFLAGS += -g -Wall -Wextra

NGX_ROOT = /usr/src/nginx-1.0.4

TARGETS = test_queue

TARGETS_C_FILE = $(TARGETS).c

CLEANUP = rm -f $(TARGETS) * .o

all: $(TARGETS)

clean:

$(CLEANUP)

CORE_INCS = -I.

- I$(NGX_ROOT)/src/core

-I$(NGX_ROOT)/src/event

-I$(NGX_ROOT)/src/event/modules

-I$(NGX_ROOT)/src/os/unix

-I$(NGX_ROOT)/objs

NGX_PALLOC =$(NGX_ROOT)/objs/src/core/ngx_palloc.o

NGX_STRING =$(NGX_ROOT)/objs/src/core/ngx_string.o

NGX_ALLOC = $ (NGX_ROOT)/objs/src/os/unix/ngx_alloc.o

NGX_QUEUE =$(NGX_ROOT)/objs/src/core/ngx_queue.o

$(TARGETS): $( TARGETS_C_FILE)

            $(CXX)$(CXXFLAGS) $(CORE_INCS) $(NGX_PALLOC) $(NGX_STRING) $(NGX_ALLOC) $(NGX_QUEUE)$^ -o $@

3. Zusammenfassung

1. Eine verknüpfte Liste wird durch den Kopf der verknüpften Liste identifiziert und enthält keine benutzerdefinierten zugehörigen Daten.

Das Obige stellt die doppelt verknüpfte Nginx-Liste ngx_queue_t vor, einschließlich des relevanten Inhalts. Ich hoffe, dass sie für Freunde hilfreich ist, die sich für PHP-Tutorials interessieren.

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Vorheriger Artikel:Linux-Installation NginxNächster Artikel:Linux-Installation Nginx