完成端口模型简介(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 Socket编程之完成端口模型

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

socket通信之八:完成端口模型实现的客户/服务器模型

完成端口的详细说明可以参考下面这两篇文章,理论讲的很好。 手把手教你玩转SOCKET模型:完成端口(Completion Port)详解  完成端口(I/O completion)原理 收藏 ...
  • u012501459
  • u012501459
  • 2015年09月03日 16:10
  • 1176

完成端口模型IOCP详解 (一)

Normal 0 7.8 磅 0 2
  • zougangx
  • zougangx
  • 2010年05月06日 16:45
  • 15278

Winsock 完成端口模型简介

 摘自《Networking Programming for Microsoft Windows》第八章“完成端口”模型是迄今为止最为复杂的一种I/O模型。然而,假若一个应用程序同时需要管理为数众多的...
  • realfei83
  • realfei83
  • 2007年05月14日 17:54
  • 381

Winsock 完成端口模型简介

 摘自《Networking Programming for Microsoft Windows》第八章“完成端口”模型是迄今为止最为复杂的一种I/O模型。然而,假若一个应用程序同时需要管理为数众多的...
  • youngcs
  • youngcs
  • 2007年07月20日 15:28
  • 625

完成端口iocp和重叠端口

windows下的IOCP和 linux下的epoll(#epoll我还没有研究过#) 都是属于socket 网络编程的范畴.不过其特色是:用固定很少的线程去管理成千上万个socket连接. 其相当...
  • Hmillet
  • Hmillet
  • 2017年05月26日 21:50
  • 565

Winsock 完成端口模型简介

转自 http://dev.csdn.net/article/81/81416.shtm “完成端口”模型是迄今为止最为复杂的一种I/O模型。然而,假若一个应用程序同时需要管理为数众多的套接字,那么采...
  • arau_sh
  • arau_sh
  • 2010年02月04日 12:36
  • 399

Winsock 完成端口模型简介

Wins...
  • wzwind
  • wzwind
  • 2008年06月05日 23:05
  • 412

Socket编程模型之完成端口模型

用完成例程来实现重叠I/O比用事件通知简单得多。在这个模型中,主线程只用不停的接受连接即可;辅助线程判断有没有新的客户端连接被建立,如果有,就为那个客户端套接字激活一个异步的WSARecv操作,然后调...
  • caoshiying
  • caoshiying
  • 2016年10月23日 20:09
  • 2204

 Windows socket之IO完成端口(IOCP)模型开发

Windows socket之IO完成端口(IOCP)模型开发       IO完成端口是一种内核对象。利用完成端口,套接字应用程序能够管理数百上千个套接字。应用程序创建完成端口对象后,通过指定一定数...
  • ithzhang
  • ithzhang
  • 2013年01月21日 16:31
  • 26024
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:完成端口模型简介(zz)
举报原因:
原因补充:

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