[IOCP模型总结.docVIP

  • 4
  • 0
  • 约 9页
  • 2017-01-11 发布于北京
  • 举报
[IOCP模型总结

IOCP(I/O Completion Port,I/O完成端口)是性能最好的一种I/O模型。它是应用程序使用线程池处理异步I/O请求的一种机制。在处理多个并发的异步I/O请求时,以往的模型都是在接收请求是创建一个线程来应答请求。这样就有很多的线程并行地运行在系统中。而这些线程都是可运行的,Windows内核花费大量的时间在进行线程的上下文切换,并没有多少时间花在线程运行上。再加上创建新线程的开销比较大,所以造成了效率的低下。 调用的步骤如下: 抽象出一个完成端口大概的处理流程: 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线程里的GetQ

文档评论(0)

1亿VIP精品文档

相关文档