对于 IO 完成端口完成时实际发生的情况,我有点困惑。
我认为 Win API 允许访问 IOCP 队列,该队列能够以某种方式将具有特定句柄(假设是套接字)的回调引用排队(或堆叠)。当 Windows 收到来自 NIC 的中断时,它会在某个时候进入 NIC 的 IOCP 队列并在其自己的(IOCP) 线程池上执行回调。
我的问题是,线程池中的这个线程是在收到中断时产生的,还是实际上是在调用 Win API 时产生的,有效地使线程处于等待状态,直到它被 IOCP 唤醒队列?
编辑:
我发现这个: http: //msmvps.com/blogs/luisabreu/archive/2009/06/04/multithreading-io-and-the-thread-pool.aspx where is states:“只要该操作完成,它将在该 I/O 完成端口上排队一个数据包。然后该端口将继续并使用线程池的线程之一来运行您指定的回调。