从 GetQueuedCompletionStatus 返回的后进先出顺序

问题描述 投票:0回答:0

Windows IOCP 文档

GetQueuedCompletionStatus
说明了这一点:

阻塞在 I/O 完成端口上执行的线程按后进先出 (LIFO) 顺序释放,下一个完成数据包从该线程的 I/O 完成端口的 FIFO 队列中拉出。

考虑具有线程 T1 和 T2 的场景:

  1. T1 将句柄 H1 与 IOCP 关联,然后 T2 将句柄 H2 与相同的 IOCP 关联。
  2. T1 调用
    GetQueuedCompletionStatus
    并被阻止。
  3. T2 调用
    GetQueuedCompletionStatues
    并被阻止。
  4. H1 上的 I/O call 操作完成。

现在,鉴于上述线程“按后进先出(LIFO)顺序释放”的声明,T1 是否会保持等待状态直到释放 T2 以满足 LIFO 顺序?

multithreading asynchronous winapi iocp
© www.soinside.com 2019 - 2024. All rights reserved.