完成端口

Posted haibaraai

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了完成端口相关的知识,希望对你有一定的参考价值。

完成端口(队列,出口)
不是很多线程,线程数为cpu线程数,减少cpu线程上下文切换,不会全部等待,线程会挂起,能用于其它工作,没有64个事件限制,,并非发起io请求的才能处理数据
完成端口,数据是从内核对象接受好后,通知完成,交给我们处理,而不是通知数据来了,再去取
异步用到重叠io数据结构(执行io请求和处理其它事是同时的)
内核发现传来的是重叠io数据结构,就使用异步方式,里面有id,处理完数据通过id查找填充回去

I/O完成端口,是Windows环境下的异步IO处理模型。IOCP采用了线程池+队列+重叠结构的内核机制完成任务。需要说明的是IOCP其实不仅可以接受套接字对象句柄,还可以接受文件对象句柄等。
IOCP本质是一种线程池的模型,当然这个线程池的核心工作就是去调用IO操作完成时的回调函数。是WINDOWS系统的一个内核对象。通过此对象,应用程序可以获得异步IO的完成通知。

详见:https://blog.csdn.net/piggyxp/article/details/6922277
C# https://docs.microsoft.com/zh-cn/dotnet/api/system.net.sockets.socketasynceventargs?redirectedfrom=MSDN&view=netframework-4.7.2







以上是关于完成端口的主要内容,如果未能解决你的问题,请参考以下文章

WINSOCK.07.完成端口模型

如果 I/O 完成端口数据包可能以不同的顺序出列,为啥 I/O 完成端口数据包会按 FIFO 顺序排队?

窗口 HTTP IO 完成端口

如何为完成端口创建多个线程?

菜鸟 关于WSASend 函数,IO完成端口模型

使用套接字时,哪些 IO 操作会导致完成数据包发送到完成端口?