完成端口模型简介(zz)

转载 2006年05月26日 02:34:00

抽象出一个完成端口大概的处理流程:
1:创建一个完成端口。
2:创建一个线程A。
3:A线程循环调用GetQueuedCompletionStatus()函数来得到IO操作结果,这个函数是个阻塞函数。
4:主线程循环里调用accept等待客户端连接上来。 
5:主线程里accept返回新连接建立以后,把这个新的套接字句柄用CreateIoCompletionPort关联到完成端口,然后发出一个异步的WSASend或者WSARecv调用,因为是异步函数,WSASend/WSARecv会马上返回,实际的发送或者接收数据的操作由WINDOWS系统去做。
6:主线程继续下一次循环,阻塞在accept这里等待客户端连接。
7:WINDOWS系统完成WSASend或者WSArecv的操作,把结果发到完成端口。
8:A线程里的GetQueuedCompletionStatus()马上返回,并从完成端口取得刚完成的WSASend/WSARecv的结果。
9:在A线程里对这些数据进行处理(如果处理过程很耗时,需要新开线程处理),然后接着发出WSASend/WSARecv,并继续下一次循环阻塞在GetQueuedCompletionStatus()这里。

归根到底概括完成端口模型一句话:
我们不停地发出异步的WSASend/WSARecv IO操作,具体的IO处理过程由WINDOWS系统完成,WINDOWS系统完成实际的IO处理后,把结果送到完成端口上(如果有多个IO都完成了,那么就在完成端口那里排成一个队列)。我们在另外一个线程里从完成端口不断地取出IO操作结果,然后根据需要再发出WSASend/WSARecv IO操作。


Windows完成端口与Linux epoll技术简介 .

Windows完成端口与Linux epoll技术简介 2009-09-16 09:13 WINDOWS完成端口编程 1、基本概念 2、WINDOWS完成端口的特点 3、...

Windows完成端口与Linux epoll技术简介

WINDOWS完成端口编程1、基本概念2、WINDOWS完成端口的特点3、完成端口(Completion Ports )相关数据结构和创建4、完成端口线程的工作原理5、Windows完成端口的实例代码...

Windows完成端口与Linux epoll技术简介

WINDOWS完成端口编程 1、基本概念 2、WINDOWS完成端口的特点 3、完成端口(Completion Ports )相关数据结构和创建 4、完成端口线程的工作原理 5、Windows完成端口...

Windows完成端口与Linux epoll技术简介

转自:Windows完成端口与Linux epoll技术简介 WINDOWS完成端口编程 1、基本概念 2、WINDOWS完成端口的特点 3、完成端口(Completion P...
  • kenkao
  • kenkao
  • 2011年12月14日 22:15
  • 1645

I/O完成端口模型

  • 2006年02月23日 09:05
  • 36KB
  • 下载

IO模型-完成端口(tcp)

  • 2010年05月15日 11:58
  • 183KB
  • 下载

windows Socket编程之完成端口模型

上篇介绍了重叠IO模型,它已经把我们的等待数据到来和拷贝数据到我们程序的缓冲区这个时间全部交给了操作系统去完成了,它已经很完善了。但是,如果我们想要把服务端的性能做的更好一点的话,它还是有点不足的,比...
  • Timmiy
  • Timmiy
  • 2016年08月17日 15:09
  • 1150

完成端口模型

  • 2013年03月24日 23:24
  • 132KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:完成端口模型简介(zz)
举报原因:
原因补充:

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