任何人都可以向我解释这个IOCP图吗?

时间:2015-02-23 15:46:34

标签: c++ windows sockets network-programming iocp

在本书" WinSock编程基础:编译"中,有这个IOCP图:

enter image description here

我知道完成通知到达完成端口,并且四个排队的线程调用GetQueuedCompletionStatus()来获取完成数据包。但是完成端口下面显示的其他两个工作线程是做什么的,这些线程是否也调用了GetQueuedCompletionStatus(),但是它们已经收到了完成数据包,现在它们正在处理它?<​​/ p>

1 个答案:

答案 0 :(得分:4)

正如马丁詹姆斯在评论中所说的那样;排队线程和工作线程都是调用GetQueuedCompletionStatus()的线程。指定为工作线程的线程已经完成处理并正在执行。指定为排队线程的线程正在等待,以获得更多完成,或者由于其创建的并发值而被IOCP阻止。如果稍后他们将等待其中一个工作线程阻止IOCP API知道的API。如果一个工作线程完成处理它所具有的当前完成,那么它将转到非活动线程队列的前面(从而允许IOCP提供其LIFO功能,该功能保持活动线程在运行,从而有助于减少上下文切换和内存故障)。

相关问题