并发服务器开发基础

news2024/9/20 21:24:45

一、服务器模型

1. 单循环服务器:  
   单循环服务器在同一时刻只能处理一个客户端的请求。由于其结构简单,适合低负载的场景,但在并发请求增加时可能导致性能问题。

2. 并发服务器模型:  
   并发服务器可以同时响应多个客户端请求,常见的实现方式包括:
   1.多进程:为每个连接创建一个新的子进程。
   2.多线程:为每个连接创建一个新的线程。
   3.IO多路复用:通过非阻塞IO和信号处理技术,允许一个线程或进程管理多个连接。

二、 Linux系统IO模型

1. 阻塞IO:
   

出现情况:当使用`scanf`、`getchar`等函数时。调用如`read`、`recv`等时,线程会阻塞,直到数据可用。这种方式可以实现多任务同步,节省CPU资源,提高执行效率。

2. 非阻塞IO:
   

- 通过`fcntl`等函数设置文件描述符为非阻塞模式。
   - 可以在等待数据的同时处理其他任务,但可能会浪费CPU资源,因为需要频繁检查是否有数据可用。

3. 信号驱动IO:
      

- 利用信号机制实现异步IO,通过`O_ASYNC`设置文件描述符的信号驱动属性。
       - 当有IO事件发生时,内核会产生信号,线程可以处理信号,但此方法通常只适用于少量IO事件的场景。

4. 多路复用IO:

    -IO多路复用是指通过单个线程同时监视多个IO流(如文件描述符、套接字)的状态,进程可以通过一个调用(如selectpoll)来等待一个或多个IO操作的准备状态。

    -特点:高效性:通过单个或少数线程处理多个连接或文件描述符,节省了上下文切换的开销,提高了性能。灵活性:IO多路复用提供了一个统一的接口,允许程序员在多个IO操作间进行调度

三、函数接口

`fcntl`
用于设置或获取文件描述符的属性。

int fcntl(int fd, int cmd, ... /* arg */ );

参数说明:
- `fd`:文件描述符
- `cmd`:
  - `F_GETFL`:获取文件描述符的属性
  - `F_SETFL`:设置文件描述符的属性

返回值:
- `F_GETFL`成功返回当前属性,失败返回-1。
- `F_SETFL`成功返回0,失败返回-1。

常用标志:
- `O_NONBLOCK`:设置为非阻塞模式。
- `O_ASYNC`:设置为异步模式。

四、总结

  • 阻塞IO适合对响应时间和并发性要求不高的情境,而非阻塞IO则适合高并发和实时性的需求。根据具体应用场景,开发者可以选择合适的IO模型来实现最佳的性能和用户体验。
  • 信号驱动IO适合需要及时响应IO操作的场景,而IO多路复用则适合高并发处理多个IO流的场景。两者在性能和复杂性上各有优缺点,开发者根据具体需求选择最合适的方法。

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

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

相关文章

openzgy编译和测试应用

zgy是仅次于segy重要的地震数据格式,最早在petrel软件中使用,目前已基本成为行业标准,具有更快的数据存储效率。openzgy是其开源版本。 ZGY文件格式由Schlumberger公司开发,用于存储地震解释的三维数据。OpenZGY库提供了读写该格式的能力。存在C++和Python两种版本。对于P…

web应用程序之服务器部署

当一个web应用层序开发好后,无论你是用什么语言,最后都要考虑部署到服务器上测试使用,这里就常见的服务器上部署进行如下的摸索总结。WSGI(Web Server Gateway Interface),翻译为Python web服务器网关接口&…

【与C++的邂逅】--- 模板初阶

Welcome to 9ilks Code World (๑•́ ₃ •̀๑) 个人主页: 9ilk (๑•́ ₃ •̀๑) 文章专栏: 与C的邂逅 本篇博客我们将了解C中泛型编程体现的一大利器 --- 模板,有了模板可以帮我们用户省力。 🏠 泛型编程 如何实现一个通…

二叉树的三个简单题

1、二叉树的第k个结点 思路解析 由题可知这是一棵二叉搜索树 它或者是一棵空树,或者是具有下列性质的二叉树: 1. 若它的左子树不空,则左子树上所有结点的值均小于它的根结点的值; 2. 若它的右子树不空,则右子树…

LSTM唐诗生成

LSTM唐诗生成 1课程简介1-2递归神经网络RNN1-3RNN网络细节1-4LSTM网络架构2-1处理Minist数据集2-2RNN网络模型及训练3-1任务概述与环境配置3-2参数配置3-3数据预处理模块3-4batch数据制作3-5RNN模型定义3-8测试唐诗生成效果 1课程简介 使用深度网络模型 写首歌 写个剧本等 原…

openshift node NotReady kubelet http: TLS handshake error

文章目录 问题现象解决方法 问题现象 openshift 集群 node 节点 notready $ oc get node NAME STATUS ROLES AGE VERSION master1.ocp4.demo.com Ready control-plane,master 4d14h v1.29.76abe8a1 master2.ocp4…

折腾 Quickwit,Rust 编写的分布式搜索引擎-官方教程

快速上手 在本快速入门指南中,我们将安装 Quickwit,创建一个索引,添加文档,最后执行搜索查询。本指南中使用的所有 Quickwit 命令都在 CLI 参考文档 中进行了记录。 https://quickwit.io/docs/main-branch/reference/cli 使用 Qui…

光庭信息半年报:营收利润「双」下降,汽车软件业务竞争加剧

「软件定义汽车」概念,不可否认强化了软件在整车价值的权重、带动更多供应商争夺软件业务的同时,也同样埋下了不小的风险。 比如,在汽车行业,常见的软件业务有两种:1、软件许可/IP,这类产品服务主要集中于…

MacOS 本地打开android模拟器

MacOS 本地打开android模拟器 查看本地安卓模拟器:emulator -list-avds 注意📢:这里会提示你找不到 emulator 命令,此时我们需要进入 cd ~/Library/Android/sdk/tools/ 查看模拟器列表:./emulator -list-avds 启动…

PHP概述-特点-应用领域-如何学习

老师建议注册使用百度文心一言;讯飞星火大模型-AI大语言模型-星火大模型-科大讯飞;Kimi.ai - 帮你看更大的世界 等人工智能工具软件的一个到两个,也可下载文心一言、讯飞星火、kimi等APP软件使用,对于我们在读的大二学生来说有什么…

需方软件供应链安全保障要求及开源场景对照自评表(上)

国标《信息安全技术 软件供应链安全要求》确立了软件供应链安全目标,规定了软件供应链安全风险管理要求和供需双方的组织管理和供应活动管理安全要求。 开源软件供应链作为软件供应链的一种特殊形式,该国标亦适用于指导开源软件供应链中的供需双方开展组…

BaseCTF [Week2] 最简单的编码

前言:做题笔记。 下载解压 查壳。 64ida打开。 查找字符串。 跟进。 逆着向前看。 说明是密文。 里面是base64的变异加密。 原base64关键加密: (看BaseCTF week1 [第一周]BasePlus 官方WP) 变种后: 在此基础上加上了…

安卓系统 XBL阶段详解

在安卓系统的启动流程中,XBL(eXtensible Boot Loader 或 Secondary Bootloader)是一个关键阶段,特别是在使用QualComm(高通)等SOC(System on Chip)的设备上。以下是对XBL阶段的详细解…

Yololov5+Pyqt5+Opencv 实时城市积水报警系统

在现代城市生活中,积水问题不仅影响交通和人们的日常生活,还可能对城市基础设施造成潜在的威胁。为了快速、准确地识别和应对积水问题,使用计算机视觉技术进行智能积水检测成为一个重要的解决方案。在这篇博客中,我将带你一步步实…

数据结构(邓俊辉)学习笔记】串 08——KMP算法:再改进

文章目录 1. 美中不足2. 以卵击石3. 前车之覆4. 后车之鉴5. 可视对比 1. 美中不足 以上,我们不仅给出了 KMP 算法,同时也证明它的时间复杂度已经达到了渐进意义上的最优,也就是最坏情况也不超过 O(n)。而该算法目前这个版本也绝非完美无缺&am…

005、架构_数据节点

​DN组件总览 ​ DN节点包含进程 dbagent进程:主要提供数据节点高可用、数据导入导出、数据备份恢复、事务一致性、运维类功能、集群的扩缩容、卸数等功能;MySQL进程:主要提供数据一致性、分组管理、快同步复制、高低水位等;

机械学习—零基础学习日志(如何理解概率论10)

数理统计 这里X为总体。x1,x2,x3为样本。具体的取值为样本值。 抽样分布 来一道习题: 回答: 上一道题解析: 《概率论与数理统计期末不挂科|考研零基础入门4小时完整版(王志超)》学习笔记 王志超老师 (UP…

一张图认识视频中间件

之前我们有介绍了很多关于视频中间件的技术资料: 超视网络视频中间件平台详解 视频中间件:海康E-home私有协议接入,并输出标准FLV/HLS/RTSP流 视频中间件:大华IPC/NVR 主动注册协议接入并输出标准FLV/RTSP/HLS流 视频中间件&#…

Meta AI动画生成功能的规模化部署与优化策略

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗?订阅我们的简报,深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同,从行业内部的深度分析和实用指南中受益。不要错过这个机会,成为AI领…

SQL 注入之报错注入、延时注入、布尔盲注

在 SQL 注入攻击中,报错注入、延时注入和布尔盲注是常见的攻击手段。这些攻击方式利用了数据库系统在处理用户输入时的漏洞,从而获取敏感信息或者执行恶意操作。本文将详细介绍这三种 SQL 注入攻击方式的原理和实现方法。 一、报错注入 报错注入是利用…