完成端口
完成端口(队列,出口)
不是很多线程,线程数为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