IOCP全称I/O Completion Port,中文译为I/O完成端口。IOCP是一个异步I/O的Windows API,它可以高效地将I/O事件通知给应用程序,类似于Linux中的Epoll,关于epoll可以参考linux之epoll
I/O 完成端口提供了一个高效的线程模型,用于处理多处理器系统上的多个异步 I/O 请求。 当进程创建 I/O 完成端口时,系统会为唯一目的是为这些请求提供服务的请求创建关联的队列对象。 处理许多并发异步 I/O 请求的进程可以将 I/O 完成端口与预先分配的线程池结合使用,而不是在收到 I/O 请求时创建线程,从而更快、更高效地执行此操作。
IOCP模型属于一种通讯模型,适用于Windows平台下高负载服务器的一个技术。
在处理大量用户并发请求时,如果采用一个用户一个线程的方式那将造成CPU在这成千上万的线程间进行切换,后果是不可想象的。
而IOCP完成端口模型则完全不会如此处理,
它的理论是并行的线程数量必须有一个上限-也就是说同时发出500个客户请求,不应该允许出现500个可运行的线程。
目前来说,IOCP完成端口是Windows下性能最好的I/O模型,同时它也是最复杂的内核对象。
它避免了大量用户并发时原有模型采用的方式,极大的提高了程序的并行处理能力。
具体可以参考MSDN中关于IOCP的介绍:
1、采用完成端口(IOCP)实现高性能网络服务器(Windows c++版)
https://www.cnblogs.com/yuanchenhui/p/iocp_windows.html
2、A simple IOCP Server/Client Class
https://www.codeproject.com/Articles/10330/A-simple-IOCP-Server-Client-Class
3、基于IOCP的HTTP服务器
https://blog.csdn.net/ET_Endeavoring/article/details/97617310
4、IOCP服务器/客户端实现
https://blog.csdn.net/thanklife/article/details/78181129
1、I/O 完成端口
2、Windows之IOCP
https://www.cnblogs.com/xiaobingqianrui/p/9258665.html
3、I/O completion port’s advantages and disadvantages
https://stackoverflow.com/questions/5283032/i-o-completion-ports-advantages-and-disadvantages