IOCP 编程之基本原理 在我的博客之前写了很多关于 IOCP 的“行云流水”似的看了让人发狂的文章,尤其是几篇关于 IOCP加线程池文章,更是让一些功力不够深厚的初学 IOCP 者,有种吐血的感觉。为了让大家能够立刻提升内力修为,并且迅速的掌握 IOCP 这个 Window s 平台上的乾坤大挪移心法,这次我决定给大家好好补补这个基础。 要想彻底征服 IOCP,并应用好 IOCP 这个模型,首先就让我们穿越到遥远的计算机青铜器时代(以出现 PC 为标志),那时候普通的 PC 安装的还是 DOS 平台,微软公司主要靠这个操作系统在 IT 界的原始丛林中打拼,在 DOS 中编写程序,不得不与很多的硬件直接打交道,而最常操作的硬件无非是键盘、声显卡、硬盘等等,这些设备都有一个特点就是速度慢,当然是相对于 PC 平台核心 CPU 的速度而言,尤其是硬盘这个机械电子设备,其速度对于完全电子化得CPU 来说简直是“相对静止”的设备。很多时候CPU可以干完 n 件(n>1000)事情的时间中,这些硬件可能还没有完成一件事情,显然让 CPU 和这些硬件同步工作将是一种严重的浪费,并且也不太可能,此时,聪明的硬件设计师们发明了一种叫做中断的操作方式,用以匹配这种速度上的严重差异。中断工作的基本原理就是,CPU 首先设置一个类似回调函数的入口地址,其次 CPU 对某个硬件发出一个指令,此时 CPU 就去干别的活计了,最后那个慢的象蜗牛一样的硬件执行完那个指令后,就通知 CPU,让 CPU 暂时“中断”手头的工作,去调用那个“回调函数”。至此一个完整的中断调用就结束了。这个模型曾经解决了显卡与CPU 不同步的问题,最重要的是解决了硬盘速度与CPU 速度严重不匹配的问题,并因此还派生出了更有名的 DMA(直接内存访问技术,主要是指慢速硬件可以读写原本只能由 CPU 直接读写的内存)硬盘IO 方式。(注意这里说的中断工作方式只是中断工作方式的一种,并不是全部,详细的中断原理请参阅其它专业文献。) 其实“中断”方式更像是一种管理模型,比如在一个公司中,如果要老板时时刻刻盯着员工作事情,那么除非是超人,否则无人能够胜任,同时对于老板这个稀缺资源来说也是一种极起严重的浪费。更多时候老板只是发指令给员工,然后员工去执行,而老板就可以做别的事情,或者干脆去打高尔夫休息,当员工完成了任务就会通过电话、短信、甚至 e-mail 等通知老板,此时老板就去完成一个响应过程,比如总结、奖罚、发出新指令等等。...