我做WaitForSingleObject(handle, timeout);
如果在调用WaitForSingleObject
之前已经发出了句柄信号,那么该函数将返回什么?
我认为它应该立即返回WAIT_OBJECT_0
...但在我的情况下,它等待事件被设置,因为没有发生(事件已经设置),它超时。< / p>
请告知。
答案 0 :(得分:7)
取决于活动。您对手动重置事件的期望是正确的,并且自动重置事件不会保持信号状态:Event Objects (Windows)。
自动重置事件一个事件对象,其状态保持信号直到a 单个等待线程被释放,此时系统 自动将状态设置为无信号。
如果没有线程在等待,则事件对象的状态仍然发出信号。 如果有多个线程在等待,则选择等待线程。做 不假设先进先出(FIFO)顺序。外部事件如 内核模式APC可以改变等待顺序。