Windows - 当重叠 I/O 正在进行时调用 CloseHandle() 是否安全?

use*_*087 6 c windows msdn handle writefile

我有一个程序,它有多个线程,需要使用相同的句柄(它是用 FILE_SHARE_READ 打开的)来写入。如果一个线程关闭句柄,而另一个线程当前正在进行 I/O(在我的例子中为 WriteFile),会发生什么情况?CloseHandle 是否会阻塞直到写入完成?

MSDN 文档关于这个主题的内容似乎很少。

Ben*_*igt 4

根据 I/O 距离完成的程度,它可以正常完成,也可以被取消。或者,如果内核文件对象上有非零使用计数(例如DuplicateHandle()已使用),则这些操作可以正常进行,直到另一个句柄也关闭为止。

CloseHandle()可能会阻塞,但如果您确实想等待挂起的 I/O 完成(成功或取消),请在调用 后等待其 OVERLAPPED 结构中的事件 HANDLE CloseHandle()

很好的附加信息:https ://community.osr.com/discussion/213975