【发布时间】:2015-01-15 02:17:14
【问题描述】:
Microsoft 的 I/O Completion Ports 文档指出:
请注意,虽然 [completion] 数据包按 FIFO 顺序排队,但它们可能会以不同的顺序出队。
据我了解,线程通过调用GetQueuedCompletionStatus从完成端口获取完成包。如果系统不保证数据包将按 FIFO 顺序检索,为什么系统会按 FIFO 顺序将数据包排队到完成端口?
【问题讨论】:
-
我不明白什么是“先进先出-出”,甚至当第一个出的不是第一个入的时候……
-
@Mehrdad 很高兴知道我不是唯一一个感到困惑的人。
-
maybe 意思是简单的情况下,使用单线程,包可能是FIFO的,但是不同的线程条件可能会改变顺序。 IE。 “在 FIFO 中排队”应该是“按插入顺序排队”。但出队机制因不同原因而有所不同
-
FIFO 仍然有意义,即使它不是严格的 FIFO。它告诉你缓冲区会有吞吐量。不像 LIFO 堆栈,其中可能有数据包“卡在底部”。
标签: iocp