并发回射服务器的最基本实现思路( fork )
2024-08-29 22:01:21
前言
一个服务器,通常会在一段时间内接收到多个请求。如果非要等到处理完一个请求再去处理下一个,势必会造成大部分用户的不满( 尤其当有某个请求需要占用大量时间时 )。如何解决这个问题?让处理这些用户请求的进程并发起来吧!
实现方法
方法一:当客户请求到达,服务器进程创建一个自身副本( 调用fork函数 )。这是网络服务器的经典用法。
方法二:当客户请求到达,服务器进程创建一个自身副本( 调用fork函数 ),然后用本机内的另一个程序替换自身( 调用execve函数 )。
注:fork和execve函数均包含于 unistd.h 头文件中
方法一实例代码
/*
* 仅展示处理客户请求那部分的代码模块
*/
while () {
// 接收客户信号
connfd = accept(listenfd, ...);
// 当该进程为子进程时,... ...( 注意如果是父进程执行则会创建一个子进程 )
if ( (pid = fork() ) == ) {
// 关闭子进程自身的监听套接字
close(listenfd);
// 子进程响应客户
doit(connfd);
// 关闭子进程的连接套接字
close(connfd);
// 关闭子进程
exit();
}
// 关闭父进程的连接套接字
close(connfd);
}
方法二实例代码
暂时没有发现,留待日后补充。
最新文章
- 一步步学习javascript基础篇(0):开篇索引
- 【转】SqlServer将没有log文件的数据库文件附加到服务器中
- Mathematica修改默认字体
- MySQL 列子查询及 IN、ANY、SOME 和 ALL 操作符的使用(转)
- PHP: configure: error: mysql configure failed. Please check config.log for more information.
- ueditor 编辑器的配置 实现上传图片---附效果图
- 基于session 的springMvc 国际化
- .htaccess实现php网站伪静态
- springboot整合mybatis(使用MyBatis Generator)
- Linux 光盘挂载步骤
- VUE组件 之 倒计时(防刷新)
- JAVA分布式架构的演进
- input单选框多选框时可用的事件
- List<;String>; 2List <;Long>;
- Crontab 删除N天前日志
- Mac上 python 找不到 yaml模块
- mongodb权限
- np.tile 和np.newaxis
- JS 四舍五入有小数点
- python传值&;值引用