Socket编程 | TCP服务器 之 并发阻塞模型(多进程实现)

news2024/11/26 20:47:18

TCP服务器IO模型 之 并发阻塞

1. 引言

在 Linux 环境下多进程的应用很多,其中最主要的就是网络/客户服务器。多进程服务器是当客户有请求时,服务器用一个子进程来处理客户请求。父进程继续等待其它客户的请求。这种方法的优点是当客户有请求时,服务器能及时处理客户,特别是在客户服务器交互系统中。对于一个 TCP 服务器,客户与服务器的连接可能并不马上关闭,可能会等到客户提交某些数据后再关闭,这段时间服务器端的进程会阻塞,所以这时操作系统可能调度其它客户服务进程,这比起循环服务器大大提高了服务性能。

2. 多进程并发服务器实现思路

TCP 并发服务器的思想是每一个客户机的请求并不由服务器直接处理,而是由服务器创建一个子进程来处理。以下为多进程并发服务器和客户端交互的拓扑结构:
在这里插入图片描述

  • 客户端 c1 会对服务器发起连接,并且产生连接套接字 fd1
  • 服务器S为了能够实现并发阻塞,会产生一个与其一模一样的子进程,并且屏蔽与客户端c1的连接套接字fd
  • 子进程1只需要负责与客户端 c1 进行通信,所以可以屏蔽监听端点。
  • 子进程1负责与客户端 c1 进行通信
  • 当有客户端 c2 进行链接时,如此类推。

问题思考:

  • 客户端退出时对应子进程要如何处理,避免僵尸进程?
    答:子进程一以signal(SIGCHLD, cleanup) 信号通知的方式通知父进程退出清理僵尸

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/364853.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

JavaEE简单示例——动态SQL元素<where>

简单介绍: 在我们之前使用where关键字进行查询的时候,总是会在后面添加一个11恒等式,并且在每一个可能拼接的SQL语句前面都加上一个and关键字,防止当后续的所有条件都不满足的时候,where关键字在最后直接跟and的时候也…

系列三、约束

一、概述 1.1、定义 约束是作用于表中字段上的规则,用于限制存储在表中的数据。1.2、作用 保证数据库中数据的正确、有效性和完整性。1.3、分类 注意事项:约束是作用于表中字段上的,可以在创建表/修改表的时候添加约束。 二、演示 需求&am…

DEV C++的使用入门程序做算术运算

DEV C Dev-C (有时候也称为 Dev-Cpp)是一个免费软件,最早是由 BloodShed 公司开发的,在版本 4.9.2 之后该公司停止开发并开放源代码。然后由 Orwell 接手进行维护,陆续开发了几个版本,后来也有其他开发人员…

基于RK3399+Linux QT地面测试台多参数记录仪测试平台软件设计(二)

rk3399 是由本土芯片厂商瑞芯微(Rockchip)研发的高性能、低功耗“中国芯”。在 2016 年 4 月,rk3399 首次在香港举行的电子展上亮相。芯片使用六核大 LITTLE 处理器: 包括四核的 Cortex-A53 和双核的 Cortex-A72,主频可…

ubuntu22下phpstorm + xdebug调试php

文章目录前言环境主要步骤xedbug的安装xedbug.so的安装浏览器安装xdebug-helperphpstorm 配置xdebug前言 主要借鉴 https://blog.csdn.net/yinhangbbbbb/article/details/79247331 但是在linux下搭建还是遇到了不少问题 环境 phpstudy phpstorm xdebug 主要步骤 phpstudy、…

Nginx学习 (1) —— 初识Nginx(编译安装、启动停止、简单配置)

文章目录Nginx的发行版本Nginx的编译安装(ubuntu18.04)Nginx相关操作Nginx启动停止命令安装Nginx为系统服务Nginx的目录结构与基本原理目录结构:基本运行原理:基础配置:核心配置Nginx的发行版本 Nginx开源版&#xff…

【UE4 制作自己的载具】1-使用3dsmax制作载具

学习谌嘉诚课程所做笔记源视频链接:【虚幻4】UE4雪佛兰科迈罗汽车详细制作中文教程!(汽车骨骼绑定驾驶、动画蓝图)汽车模型下载链接:https://pan.baidu.com/s/1ZH5gaAwckzRIZ0w6n0qvIA密码:19sj步骤&#x…

【2023蓝桥杯】2017年第八届C/C++A组真题(解析笔记)

目录 T1:迷宫 - 暴力dfs标注 T2:跳蚱蜢 - 9数算式 全排列 枚举乘号位置 T3:魔方状态 - 模拟 判重 (高手入*****) T4:方格分割 - dfs 从中心点去切割 T5:字母组串 - 递归思维-搞清楚参数…

Spring架构篇--2.5.4 远程通信基础--Select 源码篇--selector.close()总结

前言:通过selector 的poll 来完成所有socket 事件的监听,当不需要selector时 通过selector.close() 完成通道的关闭和资源的释放; 1 selector.close()关闭: AbstractSelector 类中close 方法: public final void cl…

简单说说OSI网络七层模型

如果你读过计算机专业,或者学习过网络通信,那你一定听说过 OSI 模型,它曾无数次让你头大。OSI 是 Open System Interconnection 的缩写,译为“开放式系统互联”。OSI 模型把网络通信的工作分为 7 层,从下到上分别是物理…

你知道这几种常见的JVM调优场景吗?

看此文前需已了解了运行时的数据区域和常用的垃圾回收算法,也了解了Hotspot支持的垃圾回收器。 一、cpu占用过高 cpu占用过高要分情况讨论,是不是业务上在搞活动,突然有大批的流量进来,而且活动结束后cpu占用率就下降了&#xf…

WebGL和OpenGL的区别及关系

什么是WebGLWebGL™是一个跨平台的,免版税的开放Web标准,用于基于OpenGL ES的低级3D图形API,通过HTML5 Canvas元素向ECMAScript公开。熟悉OpenGL ES 2.0的开发人员将使用GLSL将WebGL识别为基于Shader的API,其构造在语义上与底层Op…

FISCO BCOS(二十七)———java操作WeBase

一、搭建fiscobcos环境 1.1、安装jdk1.8 https://blog.csdn.net/weixin_46457946/article/details/1232435131.2、安装mysql https://blog.csdn.net/weixin_46457946/article/details/1232447361.3、安装python https://blog.csdn.net/weixin_46457946/article/details/123…

Lookup argument总览

1. 引言 详情参看Ingonyama团队Tomer 2023年论文《A Brief History of Lookup Arguments》。 Bootle等人2018年论文《Nearly linear-time zero-knowledge proofs for correct program execution》中首次提出了lookup协议,用于证明如下statement: 此处…

Python socket之TCP通信、下载文件

TCP简介TCP介绍TCP协议,传输控制协议(英语:Transmission Control Protocol,缩写为 TCP)是一种面向连接的、可靠的、基于字节流的传输层通信协议,由IETF的RFC 793定义。TCP通信需要经过创建连接、数据传送、…

手撕八大排序(上)

排序的概念及其引用: 排序的概念: 排序:所谓排序,就是使一串记录,按照其中的某个或某些关键字的大小,递增或递减的排列起来的操作。 稳定性:假定在待排序的记录序列中,存在多个具有…

Linux上基于PID找到对应的进程名以及所在目录

Linux上基于PID找到对应的进程名以及所在目录前言找到进程的pid通过top命令查看通过 ps -ef |grep nignx进行查看通过端口号进行查看查看nginx进程目录前言 在一台新接触的服务器,却不熟悉搭建所在目录的时候,这时候就就可以通过ps查找进程,并…

巧用性格上的差异来组建团队

你好,我是得物 App 交易平台及中间件平台的 Team Leader Alan。 组建团队过程中,你有没有遇到过类似的场景:团队中某些人之间总是互相不对付、气场不合,不管是日常沟通中还是方案对齐,总是会出现面红耳赤的场面。 从…

Linux_线程概念

进程回顾 在学习线程之前,我们先回顾一下之前讲的进程概念 当我们创建一个进程,操作系统会将磁盘中的代码load到内存中,然后创建当前进程的task_struct(后面可能会用”PCB“或者”进程控制块“代替),创建…

egg+vue实现登录功能【解决vue中登录的潜在问题】

前后端登录功能实现前言一、cookie和session二、代码呈现1.egg部门代码2.vue代码过程前言 记忆在时间面前总是不堪一击! 本人的记录,下面内容仅供参考,如有什么什么,请自行解决。 一、cookie和session 不多赘述,详情…