转载申明:本文可以任意转载,但需注明原文地址,谢谢!
前面单独分析了master进程和worker的工作情况,本文就大概看一下master进程和worker进程之间是如何使用channel来完成通信的。这部分实现的源码主要分布于src/os/unix/channel.h和channel.c两个文件中。实现极其简单,没有什么复杂的逻辑。下面,我绘制了一个简单的master进程和worker进程间的关系,图中的箭头符号指出数据是由master进程传给worker进程,而没有从worker到master;这是因为channel不是一个普通的数据传输管道,在Nginx中它仅仅是用着master发送指令给worker的一个管道,master借此channel来告诉worker进程该做什么了,worker却不需要告诉master该做什么,所以是一个单向的通道。

master进程每次发送给worker进程的指令用如下一个结构来完成封装:
这个结构中的4个字段分别是发送的指令、worker进程的pid、worker进程的

本文详细介绍了Nginx中master和worker进程如何通过channel进行通信。master进程使用ngx_write_channel发送如NGX_CMD_CLOSE_CHANNEL等指令,而worker进程通过ngx_read_channel接收并根据指令执行相应操作,如处理退出、重启等请求。
最低0.47元/天 解锁文章
1万+

被折叠的 条评论
为什么被折叠?



