6.1 多进程并发处理概述
6.1.1 概述
第五章中我们讨论Apache主程序的时候,当主程序调用了函数ap_mpm_run之后,整个主程序就算结束了。那么函数进入到ap_mpm_run之后它干什么去了呢?
如果让我们来写服务器程序的话,按照正常的思路,通常主程序在进行了必要的准备工作后会调用诸如fork之类的函数产生一个新的进程或者线程,然后由子进程进行并发处理。事实上,Apache尽管是一个先进的服务器,但是它也不能脱离窠臼。
主进程一旦调用ap_mpm_run之后,它就进入多进程并发处理状态。为了并发处理客户端请求,Apache或者产生多个进程,或者产生多个线程,或者产生多个进程,每个进程又产生一定数目的线程等等。
Apache HTTP服务器从一开始就被设计为一个强大、灵活的能够在多种平台上及不同的环境下工作的服务器。 不同的平台和不同的环境经常产生不同的需求,或是会为了达到同样的最佳效果而采用不同的方法。当然,Apache中提供了多种多进程并发模型,比如Prefork,Window NT,Event,perchild等等。并且为了方便移植和替换,Apache将这些多进程并发处理模型设计成模块。Apache凭借它的模块设计很好的适应了大量不同的环境。这一设计使得网站管理员能够在编译时和运行时凭借载入不同的模块来决定服务器的不同附加功能。
Apache 2.0 将这种模块式设计延伸到Web服务器的基础功能上。这个发布版本带有多道处理模块的选择以处理网络端口绑定、接受请求并指派子进程来处理这些请求。
将模块设计延伸到这一层面主要有以下两大好处:
Apache可以更简洁、更有效地支持各种操作系统。 尤其是在mpm_winnt使用本地网络特性以代替Apache 1.3
文章整理:西部数码--专业提供域名注册、虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!



