谁能给我解释一下这个 IOCP 图?

Can anyone explain to me this IOCP diagram?

在书"WinSock Programming Fundamental: A Compilation"中,IOCP有这张图:

我知道完成通知到达完成端口,四个排队的线程调用 GetQueuedCompletionStatus() 来获取完成数据包。但是完成端口下面显示的另外两个工作线程是干什么的,是不是这些线程也调用了GetQueuedCompletionStatus()但是已经收到了一个完成包,现在正在处理呢?

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