【发布时间】:2021-08-05 07:31:27
【问题描述】:
请解释一下:
来自 MSDN:https://docs.microsoft.com/en-us/windows/win32/fileio/i-o-completion-ports#supported-io-functions
考虑一个和多个并发值会发生什么 在 GetQueuedCompletionStatus 函数调用中等待的线程。在 这种情况下,如果队列总是有完成数据包等待,当 正在运行的线程调用GetQueuedCompletionStatus,它不会阻塞 执行,因为如前所述,线程队列是 LIFO。 相反,这个线程将立即拿起下一个排队的 完成包。不会发生线程上下文切换,因为 正在运行的线程不断地拾取完成数据包,并且 其他线程无法运行。
我不明白我们在说什么其他线程?
PS:很抱歉提出这样一个简单而愚蠢的问题。我真的很困惑。
【问题讨论】:
-
请链接。另外,究竟是哪一部分不清楚?哪些部分是清楚的?
-
乌尔里希·埃克哈特,docs.microsoft.com/en-us/windows/win32/fileio/…。我无法理解 OTHER 线程是关于什么的。在 MSDN 的引用中,它以粗体突出显示。
-
将该链接添加到您的问题中,您仍然可以edit 它。无论如何,那些其他线程不是第一个引用的句子中提到的那些吗?
-
但如果 iocp 中存在更多数据包?当然,许多线程可以弹出数据包并运行。取决于端口中的数据包计数和此端口的 NumberOfConcurrentThreads
-
其他线程无法运行 - 当端口达到其并发限制时 - 仅适用于这种情况