1.Nginx的buf缓冲区数据结构,主要用来存储非常大块的内存,ngx_buf_s数据结构也贯穿了整个nginx。
Nginx的缓冲区设计也是非常灵活的:
(1)可以自定义管理业务层面的缓冲区链表。
(2)可以将空闲的缓冲区链表交还给内存池pool->chain结构。
缓冲区ngx_buf_t是nginx处理大数据的关键数据结构,他既应用于内存数据,也应用于磁盘数据。
下面就是关于nginx中buf的实现
---------->buf分为两种类型:
(1)一种是file;
(2)一种是memory;
我们发送往套接字或者其他的设备发送东西时,我们是先将数据放大buf中,然后当设备或者套接字准备好了,我们就会从buf中读取。
ngx_buf_s具体结构如下:
struct ngx_buf_s {
u_char *pos;//待处理数据的开始标记(表示已经执行的数据的位置)
///last和上面内存池中last一样,也就是使用的内存的最后一个字节的指针
u_char *last;//待处理数据的结尾标记
///文件指针(处理文件时,待处理文件的开始标记和结尾标记)
off_t file_pos;
off_t file_last;
///buf的开始指针(缓冲区开始的指针地址和缓冲区结尾的指针地址)
u_char *start; /* start of buffer */
Nginx的缓冲区设计也是非常灵活的:
(1)可以自定义管理业务层面的缓冲区链表。
(2)可以将空闲的缓冲区链表交还给内存池pool->chain结构。
缓冲区ngx_buf_t是nginx处理大数据的关键数据结构,他既应用于内存数据,也应用于磁盘数据。
下面就是关于nginx中buf的实现
---------->buf分为两种类型:
(1)一种是file;
(2)一种是memory;
我们发送往套接字或者其他的设备发送东西时,我们是先将数据放大buf中,然后当设备或者套接字准备好了,我们就会从buf中读取。
ngx_buf_s具体结构如下:
struct ngx_buf_s {
u_char *pos;//待处理数据的开始标记(表示已经执行的数据的位置)
///last和上面内存池中last一样,也就是使用的内存的最后一个字节的指针
u_char *last;//待处理数据的结尾标记
///文件指针(处理文件时,待处理文件的开始标记和结尾标记)
off_t file_pos;
off_t file_last;
///buf的开始指针(缓冲区开始的指针地址和缓冲区结尾的指针地址)
u_char *start; /* start of buffer */