core—线程与IO

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

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

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

posted @ 2013-11-18 09:17  Pavkoo  阅读(387)  评论(0编辑  收藏  举报