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

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

来源:互联网 作者:west263.com 时间:2008-02-23
西部数码-全国虚拟主机10强!40余项虚拟主机管理功能,全国领先!双线多线虚拟主机南北访问畅通无阻!免费赠送企业邮局,.CN域名,自助建站480元起,免费试用7天,满意再付款! P4主机租用799元/月.月付免压金!
个进程的信息,占用内存为server_limit *sizeof(process_score);第三部分的内存保存所有进程中产生的线程的信息,占用内存为server_limit*thread_limit*sizeof(worker_score);最后一部分的内存用于保存lb_limitlb_score结构,四部分合计正好是分配的内存大小。

上述的四部分分别通过ap_scoreboard_image中相关的成员指针指向:global指针指向第一部分,parent指向第二部分,balancers指向第四部分。稍微复杂的这是的三部分线程信息的指定。共享内存中从more_storage指针往后sizeof(process_score)*server_limit的内存区域用于保存进程信息,因此将这块区域赋值给parent指针。

global_scoreprocess_score它们在本质上都可以用一维线性结构进行保存,而worker_score则更类似于二维结构,一方便它要记录本身的信息,另一方面还必须知道它是哪一个进程产生的线程,因此它们的保存方法不太一样。在ap_scoreboard_image分配的内存中我们可以看到除了正常的sizeof(scoreboard)大小之外,还包括了server_limit * sizeof(worker_score *)大小的内存区域。该数组中的每一个元素都是一个指向worker_score结构的指针,指向thread_limit个元素的worker_score类型的数组。因此servers[i]对应的数组记录的则是进程i创建的所thread_limit个线程的信息。按照这种规律,第i个进程内的第j个线程可以用server[i][j]进行描述。这个表达式在后面我们会多次使用到。

经过分配,整个记分板的内存布局可以用下图描述。

4.1 记分板内存分配图

ap_assert(more_storage == (char*)shared_score scoreboard_size);

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