完成端口

“完成端口"利用windows内核来进行I/O的调度,是用于C/S通信模式中性能最好的通信模型,其提出的初衷是解决一个线
程一个客户端的缺点,采用少量几个线程处理和客户端的通信,消除无谓的线
程上下文切换.所谓的完成端口,其实和handle _样,是个内核对象。

完成端口的工作原理及步骤如下,

1、通过CreateloCompletionPor()创建一个完成端口,保存它的好句柄;

2、创建几个工作线程,有几个CPU就开几个工作线程,使这些线程进入等待状态;

3、当有新的socket连接时,调用CreateIoCompletionPort()将新连入的socket与创建好的完成端口进行绑定

4、当连接完成后,这些已经建立连接的socket所发送请求,都将其加入到一个公共的消息队列中,当接收完成后,通知之前事先开好的工作线程。

5、工作线程分别调用 GetQueuedCompletionStatus()排队逐一去消息队列中取消息并加以处理,从而实现异步通信和负载均衡的问题。

 参考:http://blog.csdn.net/piggyxp/article/details/6922277

原文地址:https://www.cnblogs.com/socks/p/11447916.html