11.6 ngx_event_s结构体

时间 : 16-03-29 栏目 : nginx专题 作者 : 老薛 评论 : 0 点击 : 729 次

该结构体存储了网络连接IO(事件)状态的详细信息。在Nginx中,所有的ngx_event_s结构体组成了两个全局链表:一个完成连接读操作的描述,另一个完成连接写操作的描述。该结构体定义在文件/nginx/src/event/ngx_event.h中:
 

    struct ngx_event_s {  
        void                *data;                      //事件上下文数据  
        unsigned            write:1;  
        unsigned            accept:1;  
        //used to detect the stale events in kqueue, rtsig, and epoll  
        unsigned            instance:1;  
        /*  
         * the event was passed or would be passed to a kernel;  
         * in aio mode - operation was posted.  
        unsigned            active:1;  
        unsigned            disabled:1;  
        unsigned            ready:1;                        //在AIO模式下标示是否有请求事件处理  
        unsigned            oneshot:1;  
        unsigned            complete:1;                 //在AIO模式下标示请求事件是否处理完成  
        unsigned            eof:1;  
        unsigned            error:1;  
        unsigned            timedout:1;  
        unsigned            timer_set:1;  
        unsigned            delayed:1;  
        unsigned            read_discarded:1;  
        unsigned            unexpected_eof:1;  
        unsigned            deferred_accept:1;  
        unsigned            pending_eof:1;    
        ngx_uint_t          index;  
        ngx_log_t           *log;  
        ngx_rbtree_node_t   timer;  
        unsigned            closed:1;  
                                                        //以下标志用于判别工作进程的工作状态  
        unsigned            channel:1;  
        unsigned            resolver:1;  
        unsigned            locked:1;  
        unsigned            posted_ready:1;  
        unsigned            posted_timedout:1;  
        unsigned            posted_eof:1;  
                                                    //形成双向链表结构  
        ngx_event_t         *next;  
        ngx_event_t     **prev;  
    };  

结构体中定义了大量标志位用来标示网络连接IO的属性,通过变量的命名可以了解大多数标示的作用,比较难理解的笔者为其添加了注释。data变量定义为void *类型,它可以指向任意类型的数据结构,next和prev变量分别指向链表的后一个节点和前一个节点。

本文标签

除非注明,文章均为( 老薛 )原创,转载请保留链接: http://www.bdkyr.com/nginx-2/1565.html

11.6 ngx_event_s结构体:等您坐沙发呢!

发表评论

3 + 2 = ?


博主微信号,很高兴为您提供帮助

随便看看

0