所谓的IO完成端口,就是把对一种资源的多个请求放在一个队列里面,使之与端口相关联,然后创建多个工作线程去处理这些请求。怎么处理呢?每个线程在空闲的时候就会去查询以端口为代表的这个队列,如果有请求,就处理。

解决方案 »

  1.   

    按楼主的方式,本人的理解:
    所谓的IO完成端口,就是将一个资源(可以扩展为多个),与一个驱动事件相关系,然后让一个线程队列来等待驱动事件,处理与该资源相关的外部请求或通知.每个线程都是在等待一个关联驱动(驱动线程作业)事件,当有事件通知到来时再针对事件当中传过来的资源进行相应的处理.(通常在这里理解为等待完成事件,而不是查询,至少从利用IOCP编程的开发人员来说,已经不再是主动的查询,而仅仅只是等待完成事件,只是这个完成事件,除了由相关资源发送出来以外,也可能由外部为了某种目的(比如关闭线程)来伪造.
      

  2.   

    IO完成端口,就是开上一堆线程,将IO例如磁盘,SOCKET等的读写独立出来,
    等线程完成工作后通知你,以适合WINDOWS系统的特别,期间你可以从原来的等待模式下解放出来,
    去进行其他任务,直到接收到完成消息。。
    它的实质是多线程+消息
      

  3.   

    多谢unsigned和danscort2000指教。
    GetQueuedCompletionStatus是等待而不是查询,
    这个等待是要阻塞在那里一直等的,是不是?直到该工作线程被关闭或者等到获得资源控制权?