【发布时间】:2010-10-20 23:22:59
【问题描述】:
当您在使用CreateFile() 或_get_osfhandle() 创建的句柄上调用WaitForSingleObject() 时会发生什么?
出于不值得解释的原因,我想使用WaitForSingleObject() 等待我使用_get_osfhandle(fd) 创建的句柄,其中fd 来自对_open() 的常规调用。这可能吗?
我已经在实践中尝试过,在某些机器上它可以按预期工作(HANDLE 始终处于信号状态,因为您可以从中读取更多数据),并且在某些机器上WaitForSingleObject() 将无限期阻塞,如果您让它。
WaitForSingleObject() 的 MSDN 页面说,它处理的唯一受支持的事情是“更改通知、控制台输入、事件、内存资源通知、互斥体、进程、信号量、线程和可等待计时器”。
另外,如果我在 CRT 文件描述符上使用 CreateFile() 而不是 _get_osfhandle() 会有所不同吗?
【问题讨论】: