ホームページ  >  記事  >  バックエンド開発  >  nginx二重リンクリストngx_queue_t

nginx二重リンクリストngx_queue_t

WBOY
WBOYオリジナル
2016-08-08 09:23:291292ブラウズ

1. はじめに

ngx_queue_t は nginx で実装された二重リンクリストです。二重リンクリストを使用したいカスタム構造に ngx_queue_t を埋め込むだけです。もう 1 つの特徴は、ngx_queue_t がメモリ割り当てを必要としないことです。

2. 例

以下のソースコードは、「nginxの徹底理解」の第7章のngx_queue_tに関するソースコードを統合したものです。 Makefile は 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"

volatile ngx_cycle_t *ngx_cycle;

void ngx_log_error_core(ngx_uint_t level,ngx_log_t *log, ngx_err_t err,

const char * fmt, ...)

{

}

typedef struct {

ngx_int_ t compTestNode(const ngx_queue_t*a, const ngx_queue_t *b )

{

use using ngx_queue_data(a 、TestNode、qEle)- ; - > num;

}

intmain()

{

ngx_que_tqueuecontainer; (&queueContainer,&node[1].qEle);

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

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

&キューコンテナ,&ノード[4]。 qEle);

ngx_queue_t*q;

for( q = ngx_queue_head(&queueContainer); TestNode*eleNode = ngx_queue_data(q, TestNode, qEle);

printf("%dn" ,eleNode-> ;数字) ; for(q = ngx_queue_head(&queuecontainer);*elenode = ngx_queue_data(q、testnode、qele); /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

G -i $ (ngx_root)/src/event/modules

-i $ (ngx_root)/src/OS/UNIX

-I $ (ngx_root)/objs

ngx_palloc = $ (ngx_root)/objs/src/ 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)

NGX_QUEUE)$^ -o $@

3. 概要

1.リンクされたリストのヘッダーであり、ユーザー定義の関連データは含まれません。

上記では、nginx の二重リンク リスト ngx_queue_t を、関連する内容も含めて紹介しています。PHP チュートリアルに興味のある友人に役立つことを願っています。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。