Chinaunix首页 | 论坛 | 博客
  • 博客访问: 622925
  • 博文数量: 201
  • 博客积分: 3076
  • 博客等级: 中校
  • 技术积分: 2333
  • 用 户 组: 普通用户
  • 注册时间: 2009-08-02 19:44
文章分类

全部博文(201)

文章存档

2010年(118)

2009年(83)

我的朋友

分类:

2010-07-22 16:48:25


prefork 进程池模型,用在 UNIX 和类似的系统上比较多,主要是由于写起来方便,也容易移植,还不容易出问题。要知道,如果采用线程模型的话,用户线程、内核线程和混合型线程有不同的特性,移植起来就麻烦。

one fork per child 模型,一个连接一个进程,效率一般比 prefork 低。Apache HTTPd 默认是用 prefork 模型,即预先 fork() 出来一些子进程缓冲一下,用一个锁来控制同步,连接到来了就放行一个子进程,让它去处理。vsFTPd 是 one fork per child 模型。HTTP 是短连接协议,客户端拿了文件就走了,而 FTP 会话的时间长一些,进程池模型就不是主要考虑的因素。

进程池模型是一类多处理模型,建议看看 Apache 的 mod_mpm,以及相关文档。《UNIX 网络编程》第一卷第三版的部分内容也可以阅览一下。


进程的内存空间.文件描述符..等运行时信息..都比线程多得多..进程切换时肯定要记录这些信息..所以肯定比线程慢

apache也增加了对多线程的支持,而且有多种实现模式可选,ftpd一个连接的持续时间很长,线程的创建切换时间短的优势根本体现不出来,还带来诸如难编写难调试等缺点,prefork的多进程模式是理想的选择。
阅读(858) | 评论(0) | 转发(0) |
0

上一篇:css

下一篇:web server

给主人留下些什么吧!~~