IO Complement Port(完成端口)

转载 2016年06月02日 09:17:47

参考:

        1.  http://www.cnblogs.com/lancidie/archive/2011/12/19/2293773.html   此文很详细地阐述了Overlapped IO, 并重点说明和实现完成端口范例。

        2. 《Win32多线程程序设计》 侯捷译.    第六章Overlapped IO


部分摘录:

   1.所谓 scalable 系统,是指藉着 RAM 或磁盘空间或 CPU 个数的增加而能够提升应用程序效能的一种系统。

        2.  靠着“一大堆线程服务一大堆events ”的性质, completion ports比较容易建立起 “ scalable” 服务器。

   3. IO Completion Ports特点:
        i WaitForMultipleObjects() 不同,这里不限制handles 的个数。
        i I/O completion ports 允许一个线程将一个请求暂时保存下来,而由另一个线程为它做实际服务。
        i I/O completion ports 默默支持 scalable 架构。
        4.   I/O completion port是一种非常特殊的核心对象,用来综合一堆线程,让它们为“overlapped 请求”服务。其所提供的功能甚至可以跨越多个 CPUs,Completion port可以自动补偿成长中的服务器,适合应用于沉重的负担。

   5.大略可以这样描述一个 com pletion port:它是一个机制,用来管理一堆线程如何为completed overlapped I/O requests服务。然而,completion port远比一个简单的分派器丰富得多, I/O completion port 也像一个活门(阀)一样,保持一个CPU 或多个 CPUs 尽可能地忙碌,但也避免它们被太多的线程淹没。 I/O com pletion port 企图保持并行处理的线程个数在某个数字左右。一般而言你希望让所有的CPUs 都忙碌,所以默认情况下并行处理的线程个数就是 CPUs 的个数。

    6. 操作概观

      a. 产生一个 I/O completion port
      b. 让它和一个文件 handle 产生关联。
      c. 产生一堆线程。
      d. 让每一个线程都在 com pletion port上等待。
      e. 开始对着那个文件 handle 发出一些 overlapped I/O 请求。


   7. 产生一堆线程
     一旦 completion port 产生出来,你就可以设立在该 port 上等待的那些线程了。I/O completion port 并不自己产生那些线程,它只是使用由你产生的线程。因此,你必须自己以 CreateThread() _beginthreadex() (第8章)或AfxBeginThread()(第10 章)产生出线程。当你一产生这些线程时,它们都应该在 completion port 上等待。当线程开始为各个“请求”服务时,池子里的线程的组织如下:
        目前正在执行的线程
      + 被阻塞的线程
      + com pletion port 上等待的线程
     --------------------------------------------
      = 池子里的所有线程的个数




使用完成端口(IO Completion Port)读写文件

关于完成端口网上有许多文章.但是绝大多数的例子都是用在网络通信上.例如可以用其构建"scalable web server"之类的.在学习异步处理文件(overlapped IO,这里仅考虑处理本地文...

IO的端口映射和内存映射 (Port mapped I/O 和 Memory mapped I/O说明)

IO端口和IO内存的区别及分别使用的函数接口           每个外设都是通过读写其寄存器来控制的。外设寄存器也称为I/O端口,通常包括:控制寄存器、状态寄存器和数据寄存器三大类。根据访问外...

手把手教你玩转SOCKET模型:完成端口(Completion Port)详解

这篇文档我非常详细并且图文并茂的介绍了关于网络编程模型中完成端口的方方面面的信息,从API的用法到使用的步骤,从完成端口的实现机理到实际使用的注意事项,都有所涉及,并且为了让朋友们更直观的体会完成端口...
  • zhubosa
  • zhubosa
  • 2015年12月12日 12:36
  • 1496

完成端口(Completion Port)实现思路浅析 [草稿]

2009-04-14 18:32 完成端口是 NT 架构下一种高效的异步 IO 辅助机制,其使用方法已经被广为讨论,MSDN里面也有很详细的说明和示例。《Windows网络编程》一书...

完成端口(Completion Port)详解

手把手叫你玩转网络编程系列之三    完成端口(Completion Port)详解                                                        ...

Winsock完成端口模型(VER1)——I/O Completion Port(转载)

研究了几天IOCP的模型,参考了很多大牛的文章,有了点自己的感觉,于是把心得写下来,算是记录一下成长的过程,也希望用最直观的图的形式让以后的人更直观的明白IOCP的基本原理,其实IOCP有很多实现的方...
  • Syee001
  • Syee001
  • 2017年07月27日 19:29
  • 133

完成端口(Completion Port)详解

在实验室的工程中用到了原文作者提供的关于完成端口的架构,非常稳定,也非常好用,但刚开始理解起来可能有些难度。感谢原文作者毫不吝啬自己的代码,分享给所有人使用! 转自:http://blog.csdn...

完成端口(Completion Port)详解 转载来自博客园----- By PiggyXP(小猪)

完成端口(Completion Port)详解                                                              ----- By Pig...

手把手叫你玩转网络编程系列之三 完成端口(Completion Port)详解

转自:http://www.cnblogs.com/lancidie/archive/2011/12/19/2293773.html 手把手叫你玩转网络编程系列之三    完成端口(C...

完成端口(Completion Port)详解

完成端口(Completion Port)详解                                                              ----- By Piggy...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:IO Complement Port(完成端口)
举报原因:
原因补充:

(最多只允许输入30个字)