参考原帖地址:https://blog.csdn.net/beyond_cn/article/details/9336043
一、概念
1. 完成端口IOCP是一个异步IO模型, IO设计模式 属于Proactor。
2. 它开启多个工作者线程,每个工作者线程负责多个socket的处理。
3. 它利用操作系统的内核程序来并发处理多个IO,避免某个线程被单个耗时的IO操作卡死,有效地提升CPU效率。
4. 它还帮应用程序从IO读取数据至内存缓冲区,不需要应用程序亲自处理。
二、优点
1. 充分利用操作系统内核来进行I/O的调度,是用于C/S通信模式中性能最好的网络通信模型。
2. 使用少量的几个线程来处理大量客户端的所有通信,消除了无谓的线程上下文切换。
三、如何实现多线程的负载均衡
1. IOCP事先开好几个线程,CPU数 * 2 + 2。
2. 等到有用户请求来到的时候,就把这些请求都加入到一个公共队列中去。
3. 这几个开好的线程就排队逐一去从消息队列中取出消息并加以处理。
这种方式就很优雅地实现了异步通信和负载均衡的问题
四、为什么叫 重叠结构"Overlapped"
执行I/O请求的时间与线程执行其他任务的时间是重叠(overlapped)的
Windows里所有的异步通信都是基于这个 重叠结构 完成端口也不例外。
五、为什么叫 完成端