Nginx 是多进程模式的,一个 master 与多个 workers,一般工作在多核 CPU 上,所以自旋锁就是必须用到的。Nginx 中的自旋锁的定义,位于 ngx_spinlock.c 中,如下:voidngx_spinlock(ngx_atomic_t *lock, ngx_atomic_i...
分类:
其他好文 时间:
2014-10-22 17:42:02
阅读次数:
232
目录auto/have 向自动配置头文件追加可用宏定义(objs/ngx_auto_config.h)auto/nohave 向自动配置头文件追加不可用宏定义(objs/ngx_auto_config.h)auto/define 向自动配置脚本追加 K-V 宏定义(objs/ngx_auto_con...
分类:
其他好文 时间:
2014-10-22 17:37:48
阅读次数:
270
/* * Copyright (C) Igor Sysoev * Copyright (C) Nginx, Inc. */#include #include // 如果 CPU 架构是 i386 或 amd64,并且编译器是 GNU Compiler 或 Intel Compiler,则定义 cng...
分类:
其他好文 时间:
2014-10-22 17:36:15
阅读次数:
305
回顾变量 CC最初是在auto/options脚本中初始化的:CC=${CC:-gcc}1 C Compiler 的 featureWindows 平台的编译器叫做MSVC,其他平台的都统称为C Compiler。1.1 获取编译器参数该脚本并不复杂,首先通过NGX_PLATFORM变量来判断是否是...
分类:
其他好文 时间:
2014-10-22 17:34:01
阅读次数:
271
本文分析 ngxin.c 中的 ngx_get_options 函数,其影响:nginx.c 中的:static ngx_uint_t ngx_show_help;static ngx_uint_t ngx_show_version;static ngx_uint_t ngx_show_...
分类:
其他好文 时间:
2014-10-22 17:33:58
阅读次数:
283
1 Backgroundngx_http_stub_status_module 是一个 Nginx 的内置 HTTP 模块,该模块可以提供 Nginx 的状态信息。默认情况下这个模块是不被编译进来的,所以在编译 Nginx 时要指定加载该模块:--with-http_stub_status_modu...
分类:
Web程序 时间:
2014-10-22 17:23:52
阅读次数:
301
在configure中运行完auto/options脚本后,接着运行auto/init脚本,其中所做的工作如下。1 Makefile文件名变量默认情况下是:objs/Makefile代码如下:NGX_MAKEFILE=$NGX_OBJS/Makefile2 源文件名变量默认情况下是:objs/ngx...
分类:
其他好文 时间:
2014-10-22 17:23:49
阅读次数:
267
首先看 ngx_alloc.h 文件,主要声明或宏定义了 ngx_alloc,ngx_calloc,ngx_memalign,ngx_free。/* * Copyright (C) Igor Sysoev * Copyright (C) Nginx, Inc. */#ifndef _NGX_ALLO...
分类:
其他好文 时间:
2014-10-22 17:21:55
阅读次数:
202
ngx_queue作为顺序容器链表,它优势在于其可以高效地执行插入、删除、合并操作,在插入删除的过程中,只需要修改指针指向,而不需要拷贝数据,因此,对于频繁修改的容器很适合。此外,相对于STL list,它还具有以下特点:
自身实现了排序功能
轻量级,不负责内存的分配
自身支持两个链表的合并...
分类:
其他好文 时间:
2014-10-22 10:07:12
阅读次数:
279
ngx_array _t是一个顺序容器,支持达到数组容量上限时动态改变数组的大小,类似于STL中vector,具有以下特性:
下标直接索引,访问速度快
动态增长
由slab内存池统一管理分配出的内存,效率高...
分类:
编程语言 时间:
2014-10-21 15:29:35
阅读次数:
322