让服务器在启动阶段调用fork创建一个子进程池,通过子进程来处理客户端请求。子进程与父进程之间使用socketpair进行通信(为了方便使用sendmsg与recvmsg,如果使用匿名管道,则无法使用以上两个函数)。以下针对TCP进行分析。server端使用select轮询用于监听客户端请求的被动套...
分类:
其他好文 时间:
2014-09-11 16:57:12
阅读次数:
186
引言 让服务器在启动阶段调用fork创建一个子进程池,通过子进程来处理客户端请求。子进程与父进程之间使用socketpair进行通信(为了方便使用sendmsg与recvmsg,如果使用匿名管道,则无法使用以上两个函数)。以下针对TCP进行分析。 server端使用select轮询用于监听客户端请求...
分类:
系统相关 时间:
2014-09-11 13:46:01
阅读次数:
334
代码来源:游双的linux高性能服务器编程
主进程创建一个进程池,当有客户端发送请求时,主进程选择一个进程与该客户端进行通信,为了简单期间,去掉了一些信号处理代码,其中信号的用法可以参考基于多进程的网络聊天程序
服务器代码如下:
#include
#include
#include
#include
#include
#include
#include
#include
#i...
分类:
其他好文 时间:
2014-08-12 17:09:34
阅读次数:
179
进程池和线程池
池的概念
由于服务器的硬件资源“充裕”,那么提高服务器性能的一个很直接的方法就是以空间换时间,即“浪费”服务器的硬件资源,以换取其运行效率。这就是池的概念。池是一组资源的集合,这组资源在服务器启动之初就完全被创建并初始化,这称为静态资源分配。当服务器进入正是运行阶段,即开始处理客户请求的时候,如果它需要相关的资源,就可以直接从池中获取,无需动态分配。很显然,直接...
分类:
编程语言 时间:
2014-07-13 17:28:53
阅读次数:
363