文章目录
1. 销毁 struct mg_connection 链接的两种触发方式
在本文里,将详细分析mongoose是如何去销毁mgr管理链表中指定的struct mg_connection
类型变量c
。这里涉及到链表的遍历查找操作,本质上,就是一个以mgr为头结点,通过不断遍历该链表中的所有节点(struct mg_connection
数据类型变量),以找到满足条件的那个节点,然后释放该数据类型中的一些指针成员,最后释放掉本身的一个操作。
在mongoose 7.4
版本中,共有2
种方式会触发mongoose开始销毁struct mg_connection
类型节点的操作,它们分别是:
(1) 成员is_draining == 1
&&
send.len == 0
;即成员send
(发送客户端数据)中buf
缓冲区的待发送数据的长度len
为0
。有两种情况情况,会出现send.len =