CPU执行线程期间,从内存里调用指令,然后运行,这些指令有可能要从硬盘里面,网络里,读取数据。我们知道在计算机硬件体系中,从内存读取数据的速度会大于从硬盘或网络里面的速度。线程必须要等到硬盘里面的数据都加载到内存的时候才能够继续运行。这个时候CPU实际上是在等待硬盘数据的准备,也就是说当前CPU正在执行的线程会进入等待状态。这种等待对于CPU来说是一种极大的浪费,特别是对于高性能的服务器程序来说。这其中硬件,网络等设备的数据准备工作就是I/O操作。CPU在执行I/O操作的时候往往会进入等待状态。这种类型的线程执行叫做同步IO。

为了不让线程进入等待状态,windows提供了一种叫做I/o完成端口的机制来实现这个需求。当CPU执行I/O操作时,CPU不管数据有没有返回来,线程就继续进行下面的代码,这种机制叫做异步IO。

在Windows中所有设备都可以通过文件来打开,通过文件的方式来读取,写入数据实现设备与CPU之间的通讯。这里的“文件”是一个抽象概念,和通常所说的硬盘“文件”不同。“文件”不仅包含硬盘文件,还包括硬盘本身。

最新文章

  1. Python的入门要点
  2. js点击a链接弹出alert对话框
  3. Qt之界面实现技巧
  4. c#中的事件
  5. JQuery-UI Dialog下使用服务器端按钮失效
  6. Interview----判断两个链表是否相交?
  7. C++对象创建与释放
  8. C# 实现的多线程异步Socket数据包接收器框架
  9. Linux内存点滴 用户进程内存空间
  10. wx.Frame
  11. Python基础篇-day5
  12. RChain节点通信机制(上)
  13. linux小白成长之路10————SpringBoot项目部署进阶
  14. C# MethodInvoker委托的使用
  15. ZIP压缩输入/输出流
  16. CSS-高度塌陷问题
  17. C#Winform工具箱简介
  18. php二分法查找
  19. firedac连接WINDOWS的ORACLE
  20. [转]php-mobile-detect

热门文章

  1. CodeForces 321A
  2. POJ 2039
  3. Mybatis批量插入oracle,mysql
  4. C# 匿名方法 1027
  5. php curl 分离header和body信息
  6. JS中基本类型与包装类型的关系
  7. 李洪强iOS开发之计算数组的最大最小值
  8. yarn介绍
  9. ext3grep
  10. ios开发--animation flash动画