常见IO模型
来源:互联网 发布:js有集合吗 编辑:程序博客网 时间:2024/06/06 01:58
一、常见IO模型:
(1)同步阻塞IO:服务端阻塞等待客户端发送请求
(2)同步非阻塞IO:服务端采用轮询的方式处理客户端请求
(3)多路复用IO:Reator设计模式(Java中的selector和epoll)
(4)异步IO:Proactor设计模式
二、同步和异步的区别(用户线程和CPU交互方式):
(1)同步(调用者主动等待调用结果):用户发起IO请求后要等待或轮询CPU的IO操作完成才能继续执行
(2)异步(被调用者主动通知调用者):用户发起IO请求后不需要等待,继续干自己的事情,CPU的IO操作完成后告诉用户已经完成(或者调用用户的回调函数)
三、阻塞和非阻塞(用户线程等待IO调用结果时的状态,和同不同步不是一回事):
(1)阻塞:在用户调用IO的结果返回之前,用户线程会被挂起,在得到结果后才会返回
(2)非阻塞:先用户调用IO等结果的过程中,不会挂起阻塞线程,而是轮询的方式等待结果
四、4中IO的详细介绍
(1)同步阻塞IO:
(2)同步非阻塞IO:
(3)多路复用IO:
用户首先将需要进行IO操作的socket添加到select中,然后阻塞等待select系统调用返回。当数据到达时,socket被激活,select函数返回。用户线程正式发起read请求,读取数据并继续执行。
从流程上来看,使用select函数进行IO请求和同步阻塞模型没有太大的区别,甚至还多了添加监视socket,以及调用select函数的额外操作,效率更差。但是,使用select以后最大的优势是用户可以在一个线程内同时处理多个socket的IO请求。用户可以注册多个socket,然后不断地调用select读取被激活的socket。
这种IO被Redis所运用,Redis采用的就是单线程的多路IO复用实现高效的缓存IO操作。因此这种模型适合单线程处理多个IO请求。
(4)异步IO:
阅读全文
0 0
- 常见的IO模型
- 常见IO模型
- 常见IO模型浅析
- 常见IO模型
- 常见Linux IO模型分析
- 常见Linux IO模型分析
- unix/linux下几种常见的IO模型
- [GNU/Linux] 常见的IO模型
- 常见IO模型和epoll O(1)实现原理
- Windows Socket常见异步IO模型——代码攻略
- 常见IO模型和epoll O(1)实现原理
- IO模型
- IO模型
- IO模型
- IO模型
- IO模型
- IO模型
- IO模型
- 2.5类型别名,auto, decltype
- Coursera 《Machine Learning》 编程作业7:K-means聚类和主成分分析
- TCP三次握手四次挥手的原因
- React的事件处理函数
- 2017年腾讯实习生在线笔试编程题(1)
- 常见IO模型
- jQuery.lazyload详解
- python(三)6种排序算法性能比较(冒泡、选择、插入、希尔、快速、归并)
- Struts tiles入门(最最简单的例子)
- 51nod 1391 01串
- 文化传统的变迁·《这世界,原该天清地宁》
- 机器学习_集成学习
- Team them up! UVA
- MySQL中的数据类型和Java中的对应