当前位置: 首页 > news >正文

并发服务器---IO多路复用

单循环服务器:同一时刻只能处理一个客户端任务

并发服务器:   同一时刻,只能处理多个客户端的任务

实现方法:多进程 多线程 IO多路复用

IO多路复用:

1.阻塞io(fgets  scanf  recv getchar  read)

想要两个io具有同步的方式  |  CPU占有率低

2.非阻塞io

使用轮询的方式实现 | cpu占有率高

实现方式:

1.获取原文件描述符的属性fcntl()

2.为文件描述符添加非阻塞属性

3.设置文件描述符属性

fcntl()

常用

F_GETFL  获取   F_SETFL 设置  

3.信号驱动io

异步通知的io方式,节省cpu | 只能监测少量io,以轮询的方式可监测多量io

实现方式:

1)为IO设备增加信号驱动属性
O_ASYNC
2)关联SIGIO信号到对应进程
fcntl(fd, F_SETOWN, getpid());
3) 注册SIGIO处理函数
signal

4.io多路复用(多个io通过一个进程监测)

多进程和多线程的主要区别在于以下几个方面:
  1. 资源管理

    • 多进程:每个进程有自己的内存空间和资源,进程间通信(IPC)通常复杂且开销较大。
    • 多线程:线程共享同一进程的内存空间和资源,线程间通信较为简单且高效。
  2. 开销

    • 多进程:进程创建和销毁的开销较大,因为需要分配和管理独立的内存空间。
    • 多线程:线程创建和销毁的开销较小,因为它们共享进程的内存和资源。
  3. 独立性

    • 多进程:进程间相对独立,一个进程的崩溃不会直接影响到其他进程。
    • 多线程:线程之间较为紧密,一个线程的崩溃可能会影响整个进程中的其他线程。
  4. 使用场景

    • 多进程:适用于需要强隔离和独立运行的任务,如服务器处理多个客户端请求。
    • 多线程:适用于需要共享数据和资源的任务,如计算密集型的应用和需要快速响应的应用。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 24暑假算法刷题 | Day39 | 动态规划 VII | LeetCode 198. 打家劫舍,213. 打家劫舍 II,337. 打家劫舍 III
  • mysql的group by怎么用
  • 后端面试真题整理
  • Flask 安装和应用
  • LVGL之FFmpeg使用
  • 扬尘监测算法全套源码扬尘监测算法识别训练样本展示
  • 视频提取字幕的软件有哪些?5款高识别率工具任你选
  • git 主要命令
  • element的el-steps里的数据处理用switch 循环,处理的数据不要vue响应式的值
  • Leetcode 131.分割回文串 回溯 C++实现
  • Linux下qt程序缺少中文字库,中文显示为框框
  • 【Java设计模式】非循环访问者模式:简化对象交互
  • Git下载安装配置
  • Apache + Tomcat + ajp 协议配置
  • Android13禁用Settings里面的Force Stop 強制停止按钮
  • 03Go 类型总结
  • 2019.2.20 c++ 知识梳理
  • 5、React组件事件详解
  • Github访问慢解决办法
  • iOS编译提示和导航提示
  • JSONP原理
  • linux学习笔记
  • MySQL主从复制读写分离及奇怪的问题
  • React组件设计模式(一)
  • spring + angular 实现导出excel
  • UMLCHINA 首席专家潘加宇鼎力推荐
  • vue 个人积累(使用工具,组件)
  • 闭包--闭包作用之保存(一)
  • 记一次和乔布斯合作最难忘的经历
  • 开源中国专访:Chameleon原理首发,其它跨多端统一框架都是假的?
  • 快速体验 Sentinel 集群限流功能,只需简单几步
  • 前端技术周刊 2019-02-11 Serverless
  • 如何优雅地使用 Sublime Text
  • 协程
  • 一文看透浏览器架构
  • FaaS 的简单实践
  • 函数计算新功能-----支持C#函数
  • ​​​​​​​STM32通过SPI硬件读写W25Q64
  • ​Distil-Whisper:比Whisper快6倍,体积小50%的语音识别模型
  • ​Kaggle X光肺炎检测比赛第二名方案解析 | CVPR 2020 Workshop
  • ​LeetCode解法汇总307. 区域和检索 - 数组可修改
  • ​草莓熊python turtle绘图代码(玫瑰花版)附源代码
  • #经典论文 异质山坡的物理模型 2 有效导水率
  • (3)医疗图像处理:MRI磁共振成像-快速采集--(杨正汉)
  • (6)STL算法之转换
  • (libusb) usb口自动刷新
  • (八)Docker网络跨主机通讯vxlan和vlan
  • (第三期)书生大模型实战营——InternVL(冷笑话大师)部署微调实践
  • (附源码)spring boot北京冬奥会志愿者报名系统 毕业设计 150947
  • (附源码)计算机毕业设计SSM基于java的云顶博客系统
  • (十一)手动添加用户和文件的特殊权限
  • (最新)华为 2024 届秋招-硬件技术工程师-单板硬件开发—机试题—(共12套)(每套四十题)
  • .NET 3.0 Framework已经被添加到WindowUpdate
  • .NET MVC之AOP
  • .NET Reactor简单使用教程