I/O 多路复用是通过一种机制使一个进程能同时等待多个文件描述符(fd),而这些文件描述符(套接字描述符)其中的任意一个进入读就绪状态,epoll()函数就可以返回。 所以, IO多路复用,本质上不会有并发的功能,因为任何时候还是只有一个进程或线程进行工作,它之所以能提高效率是因为select\epoll 把进来的socket放到他们的 '监视' 列表里面,当任何socket有可读可写数据立马处理,那如果select\epoll 手里同时检测着很多socket, 一有动静马上返回给进程处理,总比一个一个socket过来,阻塞等待,处理高效率。

  当然也可以多线程/多进程方式,一个连接过来开一个进程/线程处理,这样消耗的内存和进程切换页会耗掉更多的系统资源。 所以我们可以结合IO多路复用和多进程/多线程 来高性能并发,IO复用负责提高接受socket的通知效率,收到请求后,交给进程池/线程池来处理逻辑。

转载于:https://www.cnblogs.com/shenge1106/p/9272298.html

I/O 多路复用的特点:相关推荐

  1. Redis 笔记(12)— 单线程架构(非阻塞 IO、多路复用)和多个异步线程

    Redis 使用了单线程架构.非阻塞 I/O .多路复用模型来实现高性能的内存数据库服务.Redis 是单线程的.那么为什么说是单线程呢? Redis 在 Reactor 模型内开发了事件处理器,这个 ...

  2. 漫谈五种IO模型(主讲IO多路复用)

    首先引用levin的回答让我们理清楚五种IO模型 1.阻塞I/O模型 老李去火车站买票,排队三天买到一张退票. 耗费:在车站吃喝拉撒睡 3天,其他事一件没干. 2.非阻塞I/O模型 老李去火车站买票, ...

  3. Python:通过一个小案例深入理解IO多路复用

    通过一个小案例深入理解IO多路复用 假如我们现在有这样一个普通的需求,写一个简单的爬虫来爬取校花网的主页 import requests import timestart = time.time()u ...

  4. java nio原理 epoll_多路复用 Select Poll Epoll 的实现原理(BIO与NIO)

    BIO blocking阻塞的意思,当我们在后端开发使用的时候,accetp 事件会阻塞主线程. 当accept事件执行的时候,客户的会和服务建立一个socket 连接.一般后端就会开启一个线程执行后 ...

  5. 【面试必问】支撑百万并发的IO多路复用技术你了解吗?

    多路复用其实并不是什么新技术,它的作用是在一个通讯连接的基础上可以同时进行多个请求响应处理.对于网络通讯来其实不存在这一说法,因为网络层面只负责数据传输:由于上层应用协议的制订问题,导致了很多传统服务 ...

  6. 硬件断点反跳似乎_高性能应用程序:多路复用,反跳,系统字体和其他技巧

    硬件断点反跳似乎 by Atila Fassina 通过阿蒂拉·法西纳(Atila Fassina) 高性能应用程序:多路复用,反跳,系统字体和其他技巧 (High Performance Apps: ...

  7. 聊一个不常见的面试题:为什么数据库连接池不采用 IO 多路复用?

    欢迎关注方志朋的博客,回复"666"获面试宝典 今天我们聊一个不常见的 Java 面试题:为什么数据库连接池不采用 IO 多路复用? 这是一个非常好的问题.IO多路复用被视为是非常 ...

  8. 为什么数据库连接池不采用 IO 多路复用?

    欢迎关注方志朋的博客,回复"666"获面试宝典 接着,今天我们聊一个不常见的 Java 面试题:为什么数据库连接池不采用 IO 多路复用? 这是一个非常好的问题.IO多路复用被视为 ...

  9. 四图,读懂 BIO、NIO、AIO、多路复用 IO 的区别

    点击上方蓝色"方志朋",选择"设为星标" 回复"666"获取独家整理的学习资料! 来源:blog.csdn.net/lzb348110175 ...

  10. Linux IO多路复用之Select简史

    内容目录 前言早期的UnixTCP/IP诞生后终端复用套接字章节回顾结论引用 前言 最近我一直在思考 Linux 中的多路复用,即 epoll(7)[1]系统调用.我很好奇 epoll与Windows ...

最新文章

  1. Android实战技巧之六:PreferenceActivity使用详解
  2. npm安装less报错 rollbackFailedOptional: verb npm-session
  3. ASP.net:添加.net(2.0C#)FCKeditor在线编辑器步骤
  4. 40 个 Spring Boot 常用注解
  5. OpenGL相机控制之一
  6. SQL基本语句语法释义
  7. java \t怎么从头开始_如何从头开始以正确的面向对象方式创建Java Web Framework
  8. @Value和Hibernate问题
  9. 单片机七阶音符_单片机对于音乐的编程中 ,音符的十六位数据表是怎样
  10. 在cmakelists和makefile中设置opencv
  11. HTML5 Web SQL实现简单的增删改查websql使用方法vue2.0使用websql实现浏览器存储
  12. 销售管理系统er图_这套电商订单管理系统,90%电商玩家都受用
  13. abb机器人伺服电机报闸是什么_ABB机器人伺服电机进油的分析及解决措施
  14. instant-ngp
  15. 计算机组成原理(笔记)
  16. 厉害了,分布式数据库中间件ShardingSphere毕业成为Apache顶级项目!
  17. Goldengate辅助数据库进行升级
  18. 做好项目信息管理,是优秀项目经理的必备技能
  19. flutter创建/导入区块链钱包,获取余额
  20. php 作业 的背景,新课课程背景下中学语文作业布置的思考(网友来稿)a href=/friend/list.php(教师中心专稿)/a...

热门文章

  1. 对于集成SP3后后不能激活的解释
  2. nacos动态配置数据源_Sentinel使用Nacos存储规则及同步
  3. oracle 报错06502,求助!!ORA-06502错误
  4. UGUI LongText
  5. HQL (迫切)左外连接
  6. 进程间通信 --- 命名管道 有名管道存在与内存中,无名管道存在与文件系统中 换种角度看问题
  7. 7月5日服务器临时维护更新公告,封印战记7月5日更新什么? 7月5日临时更新维护公告...
  8. 10年专注单片机从业者告诉你如何自制一个属于自己的单片机开发板
  9. while循环python的范围_为什么Python中的range()循环比使用while循环更快?
  10. 【渝粤教育】国家开放大学2019年春季 2766养羊技术 参考试题