网络编程五种IO模型的形象比喻(老陈收信)
网摘录如下比喻,实在生动贴切.....
select模型
WSAAsyncSelect模型
WSAEventSelect模型
Overlapped I/O 事件通知模型
Overlapped I/O 完成例程模型
IOCP模型
老陈有一个在外地工作的女儿,不能经常回来,老陈和她通过信件联系。他们的信会被邮递员投递到他们的信箱里,这和Socket模型非常类似。
select模型
老陈非常想看到女儿的信。以至于他每隔10分钟就下楼检查信箱,看是否有女儿的信~~~~~
在这种情况下,“下楼检查信箱”然后回到楼上耽误了老陈太多的时间,以至于老陈无法做其他工作。
select模型和老陈的这种情况非常相似:周而复始地去检查......如果有数据......接收/发送.......
WSAAsyncSelect模型
后来,老陈使用了微软公司的新式信箱。这种信箱非常先进,一旦信箱里有新的信件,盖茨就会给老陈打电话:喂,大爷,你有新的信件了!从此,老陈再也不必频繁上下楼检查信箱了,牙也不疼了,你瞅准了,蓝天......不是,微软~~~~~~~~
微软提供的WSAAsyncSelect模型就是这个意思。
WSAEventSelect模型
后来,微软的信箱非常畅销,购买微软信箱的人以百万计数......以至于盖茨每天24小时给客户打电话,累得腰酸背痛,喝蚁力神都不好使~~~~~~
微软改进了他们的信箱:在客户的家中添加一个附加装置,这个装置会监视客户的信箱,每当新的信件来临,此装置会发出“新信件到达”声,提醒老陈去收信。盖茨终于可以睡觉了。
Overlapped I/O 事件通知模型
后来,微软通过调查发现,老陈不喜欢上下楼收发信件,因为上下楼其实很浪费时间。于是微软再次改进他们的信箱。新式的信箱采用了更为先进的技术,只要用户告诉微软自己的家在几楼几号,新式信箱会把信件直接传送到用户的家中,然后告诉用户,你的信件已经放到你的家中了!老陈很高兴,因为他不必再亲自收发信件了!
Overlapped I/O 事件通知模型和WSAEventSelect模型在实现上非常相似,主要区别在“Overlapped”,Overlapped模型是让应用程序使用重叠数据结构(WSAOVERLAPPED),一次投递一个或多个Winsock I/O请求。这些提交的请求完成后,应用程序会收到通知。什么意思呢?就是说,如果你想从socket上接收数据,只需要告诉系统,由系统为你接收数据,而你需要做的只是为系统提供一个缓冲区~~~~~
Overlapped I/O 完成例程模型
老陈接收到新的信件后,一般的程序是:打开信封----掏出信纸----阅读信件----回复信件......为了进一步减轻用户负担,微软又开发了一种新的技术:用户只要告诉微软对信件的操作步骤,微软信箱将按照这些步骤去处理信件,不再需要用户亲自拆信/阅读/回复了!老陈终于过上了小资生活!
网络编程五种IO模型的形象比喻(老陈收信)相关推荐
- 网络编程五种IO模型之epoll模型
// epoll2.cpp : 定义控制台应用程序的入口点. //#include <stdio.h> #include <sys/epoll.h> #include < ...
- 网络编程五种IO模型之poll模型
// poll_impl.cpp : 定义控制台应用程序的入口点. //#include "stdafx.h"#include <unistd.h> #include ...
- 说说基于网络的五种IO模型
# django不是一个异步框架 # tornado是异步的web框架# 处理每秒大量的请求# 个人理解的IO:就是应用层与内核驱动层的交互,这个过程无论从应用层到内核中,还是驱动层等待硬件层的数据, ...
- Linux 下的五种 IO 模型
Linux 下的五种 IO 模型 来源:decaywood's Blog 概念说明 用户空间与内核空间 现在操作系统都是采用虚拟存储器,那么对32位操作系统而言,它的寻址空间(虚拟存储空间)为4G(2 ...
- 聊聊 Linux 中的五种 IO 模型
聊聊 Linux 中的五种 IO 模型 2016/04/21 · IT技术 · 8 评论 · iO, 同步, 异步, 阻塞, 非阻塞 分享到:0 本文作者: 伯乐在线 - 陶邦仁 .未经作者许可,禁止 ...
- 详解Linux 五种IO模型
原文:https://www.jianshu.com/p/486b0965c296 上一篇 同步.异步.阻塞.非阻塞 已经通俗的讲解了,要理解同步.异步.阻塞与非阻塞重要的两个概念点了,没有看过的,建 ...
- Linux 五种IO模型
想快速了解,看文末总结. 1 概念说明# 在进行解释之前,首先要说明几个概念: 用户空间和内核空间 进程切换 进程的阻塞 文件描述符 缓存 IO 1.1 用户空间与内核空间## 现在操作系统都是采用虚 ...
- 你应该知道的五种IO模型
点击上方蓝色字体,选择"设为星标" 优质文章,及时送达 写在前面 linux操作系统包含了五种IO模型,各种上层编程语言或者网络编程框架的上层实现都是基于操作系统的这些IO实现来实 ...
- Linux五种IO模型性能分析
转载:http://blog.csdn.net/jay900323/article/details/18141217 Linux五种IO模型性能分析 目录(?)[-] 概念理解 Linux下的 ...
最新文章
- 不用地图如何导航?DeepMind提出新型双路径强化学习「智能体」架构
- 微软职位内部推荐-Software Engineer II
- autocad.net中ResultBuffer相关的常量值
- 川教版计算机三年级下册教案,川教版小学三年级下册信息技术教案(全册)
- 你永远不知道女生裙子下面藏着什么
- tomcat(10)安全性
- dhcp只能分配与路由器相同网段么_路由器的桥接详解
- FreeMarker的优点和缺点
- netbeans的python配置
- mysql数据库过滤空值_mysql必知必会--过 滤 数 据
- 微信支付之异步通知签名错误
- c语言编程串级控制,组态王-串级控制
- Jenkins 设置镜像_在k8s上安装Jenkins及常见问题
- 有5个人坐在一起,问第五个人多少岁?他说比第4个人大2岁。问第4个人岁数,他说比第 3个人大2岁。问第三个人,又说比第2人大两岁。问第2个人,说比第一个人大两岁。最后 问第一个人,他说是10岁。请问第
- 网络交互实验实验总结
- 什么是二维数组以及二维数组传参
- google新操作系统Fuchsia
- RAM内存 ROM存储
- Windows下查看exe可执行程序或dll动态库所依赖dll动态库的方法
- matlab模拟土壤水分入渗,基于HYDRUS-2D的负压灌溉土壤水分入渗数值模拟