看了
apache 的分析文章之后,觉得里面的图非常好地描述了 apache 的结构。也尝试用 visio 画一下
spprocpool 的结构。
对图中各个部分的说明:
1. MasterServer 通过 Fork 创建 ProcessManager ,ProcessPool 作为 ProcessManager 在 MasterServer 中的存根
2. 在 ProcessPool 和 ProcessManager 存在一个 ManagerPipe 管道
3. 当 MasterServer 需要更多的子进程的时候,MasterServer 通过 ProcessPool 对象向 ProcessManager 发起创建 ChildServer 的请求4. ProcessManager 是创建 ChildServer 的唯一一个地方
5. 在 MasterServer 和 ChildServer 之间存在一个 ChildPipe 管道
6. MasterServer 只负责监控子进程的状态(包括:忙、闲、异常退出),监控子进程的状态完全是通过 ChildPipe 来进行的;MasterServer 使用 select 可以同时监控所有的 ChildPipe 的可读状态;当一个 ChildPipe 可读的时候,MasterServer 读入内容,如果读入的最后一个字节为 BusyChar,设置 Child 的状态为 Busy;如果为 IdleChar ,设置 Child 的状态为 Idle;如果读入 0 字节,那么表示 Child 已经关闭 ChildPipe ,也就表明 Child 已经异常退出了。
7. ChildServer 被创建出来之后,就在 ListenFd 上 accept ,如果 accept 成功就通过 ChildPipe 发送一个 BusyChar,然后开始处理;处理结束之后,再通过 ChildPipe 发送一个 IdleChar;接着检查 PipeOfDeath 是否有内容,如果读到有内容,那么子进程自行退出;
关于几个主要文件句柄的传递说明:
1. ManagerPipe :MasterServer 创建,传递给 ProcessManager(通过 Fork)
2. ListenFd :MasterServer 创建,传递给 ProcessManager(通过 Fork),由 ProcessManager 传递给 ChildServer(通过Fork)
3. PipeOfDeath :MasterServer 创建,传递给 ProcessManager(通过 Fork),由 ProcessManager 传递给 ChildServer(通过 Fork),MasterServer 持可写的一端,各个 ChildServer 持可读的一端;PipeOfDeath 在 MasterServer 只有一个句柄;
4. ChildPipe :MasterServer 创建,传递给 ProcessManager(通过 Send_Fd),由 ProcessManager 传递给 ChildServer(通过 Fork),ChildPipe 在 MasterServer 有多个,每个 ChildServer 有一个 ChildPipe;
分享到:
相关推荐
领导者/跟随者模式(Leader/Followers Pattern)是一种高效的多线程设计模式,它旨在优化多线程环境下输入/输出(I/O)事件的处理效率。这种模式允许多个线程高效地分派和处理共享I/O句柄上的事件,从而提高系统的...
在MATLAB中,Leader-Follower算法是一种用于聚类的数据分析方法。这个算法主要适用于处理具有相似性质的对象集合,通过寻找“领导者”(中心点或关键点)并让其他数据点跟随这些领导者,来划分数据群体。这个算法在...
This is simulation of leader follower control system.
在多智能体系统中,领导者-跟随者(Leader-follower)模型是一种常见的协调策略,它涉及一个或多个领导者引领一群跟随者实现特定任务。在这个基于MATLAB的项目中,我们将会探讨如何通过编程来实现这样的系统。以下是...
领航跟随编队控制设计编队避障的一些信息,包含避障
在多智能体系统中,"leader-follower"架构是一种常见的协调策略,其中至少有一个智能体作为领导者,其余的称为跟随者。领导者设定运动方向或目标,而跟随者通过与领导者和其他跟随者的交互来模仿领导者的行动,从而...
在Leader-follower框架下的多机器鱼系统队形控制中,针对Leader和Follower相对独立及落后机器鱼离队等问题,在传统的Leader-follower队形控制算法中引入模糊反馈控制器进行反馈调节,使得领航机器鱼Leader能定时检查...
"网络游戏-基于Ad-Hoc网络和leader-follower算法的多机器人编队方法"这个主题涉及到两个关键概念:Ad-Hoc网络和Leader-Follower算法,这些技术在多机器人协作和控制中扮演着重要角色。 首先,Ad-Hoc网络是一种自...
下行异构网络中基于多领导者多跟随者博弈的功率控制算法,韩乔妮,杨博,异构网络(Heterogeneous networks, HetNets)是正在扩张的3G网络和新兴的4G网络的重要组成部分。然而,为了达到所有用户的服务质量(Quality ...
第一个使用描述符传递,第二个使用Leader/Follower 进程池,第三个使用多处理和多线程模型的组合。 包括一个通用的非服务器进程池,它可以在多线程环境中使用。 变更日志: 0.5 版的变化 (01.05.2007) 添加了一个...
在探讨多线程技术的过程中,一个重要的设计模式被广泛提及,那就是**领导者与跟随者模式**(Leader/Followers Pattern)。这一模式不仅适用于网络服务器的设计,也广泛应用于其他需要高效处理并发请求的场景中。下面将...
目前,多机器人编队控制算法主要包括虚拟结构(Virtual Structure)法、基于行为(Behavior-based)的法、人工势场法(Artificial Potential)法、领航-跟随(Leader-Follower)法等。 本文提出的方法具有以下优点...
它最终将支持包括:通过使用 etcd 的 leader / follower 配置集群,在语义上类似于 Kafka(但没有单个控制器,并且有更简单的配置和操作)更高级别的客户端,基于 Kafka 当前的客户端设计加密改进的客户端和扩展 API...
Leader–Follower Consensus of Multivehicle Wirelessly Networked Uncertain Systems Subject to Nonlinear Dynamics and Actuator Fault
在这些系统中,通常存在一个领导者(leader),它负责生成期望轨迹,并通过通信网络与其他智能体(followers)交互,实现输出同步。 本文的主要贡献可以总结如下: 1. 提出了一种新的分布式最优控制协议,用于解决...