connection 主要负责连接,里面存放了很多的信息: 读事件、写事件、socket等。
一 获得一个connection
在nginx_event.c 中的ngx_event_process_init 函数中创建:
整个过程就是 connnection 、 readevent、 writeevent 分配空间,把每个connection 和 read、write 事件关联,并把所有的connection组成链表,放在空闲的connection位置上。最后结构入下图:
二 使用
connection的使用在函数 ngx_get_connection 中实现 (ngx_connection.c)
整个过程验证socket大小、从空闲的connection链表中得到一个connection,并进行初始化,主要是清空除了读写事件以为的所有内容,并关联socket,最后对读写事件分别进行初始化。
具体应用:
1 创建listen socket的时候,需要和一个connenction关联,就是通过这个函数调用得到一个connection的。
2 当一个连接到来的时候,需要一个connection进行服务, 这个在函数ngx_event_accept中调用
其它我也不知道了。。。
三 释放一个connect
这个比较简单
四 注销所有的connection
我也不知道在哪里?知道的告诉我下
总结: 1 通过预先分配,这样可以提高效率