设为首页 加入收藏

TOP

web服务器lighttpd1.4.18代码详细分析(二)
2014-11-24 00:42:12 来源: 作者: 【 】 浏览:14
Tags:web 服务器 lighttpd1.4.18 代码 详细 分析
父进程负责创建子进程并且监控是否有子进程退出, 如果有, 那么再次创建出子进程;而子进程是worker, 是具体执行服务器操作的工作者, 在被创建完毕之后退出循环, 去做下面的事情.而如果父进程退出这个循环, 那么一定是srv_shutdown或者graceful_shutdown之一变为了非零值, 所以在循环外, 还要进行判断, 如果是父进程, 那么就是服务器程序要退出了, 最后作一些清理的工作.


用伪码表示这部分代码就是:
如果(是 进程 而且 当前没有要求终止服务器) 就一直循环下去
{
如果还有未创建的子进程
{
创建出一个子进程
如果是子进程, 那么根据最上面的循环条件退出这个循环.
如果是父进程, 那么将未创建的子进程数量 - 1
}
否则 就是没有未创建的子进程
{
一直保持睡眠, 一旦发现有子进程退出父进程就苏醒, 将未创建的子进程数量 + 1;
}
}


父进程的代码永远不会执行到这个循环体之外, 一旦发生, 就是因为要终止服务器的运行, 如果这种情况发生, 就进行最后的一些清理工作....


在这之后, 各子进程分道扬镳, 各自去进行自己的工作, 互不干扰.这也是我非常喜欢多进程编程的原因, 少了多线程编程中考虑到数据同步等麻烦的事情,要考虑的事情相对而言简单的多了.


关于多进程 VS 多线程的话题, 不在这里多加阐述了.


首页 上一页 1 2 下一页 尾页 2/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇apue2中源码的使用 下一篇Linux下常见音频格式之间的转换方..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: