手机站
网通分站
电信主站
密 码:
用户名:
当前位置 : 主页>程序设计>Java技术>列表

Apache中多任务并发处理机制研究(1)

来源:互联网 作者:west263.com 时间:2008-02-23
西部数码-全国虚拟主机10强!40余项虚拟主机管理功能,全国领先!双线多线虚拟主机南北访问畅通无阻!免费赠送企业邮局,.CN域名,自助建站480元起,免费试用7天,满意再付款! P4主机租用799元/月.月付免压金!
Apache服务器的,而不是针对某个进程或者某个线程的,该结构定义如下:

typedef struct {

int server_limit;

int thread_limit;

ap_scoreboard_e sb_type;

ap_generation_t running_generation;

apr_time_t restart_time;

} global_score;

从该结构中我们可以看出,全局的共享信息包括下面的几个内容:server_limit描述系统中所存在的服务进程的极限值,thread_limit则是描述的线程的极限值。ap_scoreboard是枚举类型,只有两个值SB_NOT_SHAREDSB_SHARED,分别表示该记分板是否进程间共享还是不共享。

ap_generation_t的定义实际上是整数值:typedef int ap_generation_t。该值主要用于平稳启动(graceful restart) Apache中允许在不终止Apache的情况下对Apache进行重新启动,这种启动称之为平稳启动。平稳启动的时候,主服务进程将退出,同时创建新的子进程。此时这些子进程由父进程创建,它们形成一个继承称此上的家族概念,只要是主进程产生的所有子进程都属于这个主进程家族,因此我们称它们称之为为新的(generation),在本书中我们统一用家族这个术语进行描述。只有子进程与父进程具有亲缘关系,它们才是一个家族。每一个进程在执行完任务之后都会检查它与当前的主进程是否属于同一个家族。如果属于,则继续等待处理下一个任务;否则其将退出。由于Apache在进行平稳启动的时候对于那些尚未结束的进程并不强行将其终止,而是让其继续执行,但是主进程必须退出重新启动。因此当新的主进程启动之后,这些残余的子进程显然已经跟它不是同一个家族,它们属于上一辈的。因此他们在执行完任务之后立即退出。

某个主进程产生后它就产生一个唯一的家族号,用running_generation进行记录。该值永远不会重复。主进程的所有子进程将继承该家族号。running_generation是识别其家族的唯一标记。如果子进程的running_generation与父进程相同,则说明本家族的进程尚存在;反之,如果不相同,则它们执行完后必须结束。这正应了一句古语:覆巢之下无完卵或者为

文章整理:西部数码--专业提供域名注册虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!