根据http://support.microsoft.com/kb/156932,如果满足某些条件,对 ReadFile 的调用可能会出现同步。例如,如果目标文件是 NTFS 压缩的。这篇文章没有说明如果文件句柄与 IOCP 关联会发生什么。
那么当文件句柄与 IOCP 关联时,在这种情况下会发生什么?我是否仍会收到此请求的 IO 完成数据包,还是该请求会完全同步执行?
如果是这样,我必须将整个 ReadFile 调用放在一个工作线程中。最初发出 ReadFile 调用的线程不允许阻塞。我考虑 IOCP 的原因是因为将 ReadFile 调用放入工作线程意味着上下文切换到工作线程,然后在 ReadFile 之后立即阻塞。