WaitForSingleObject(handle, timeout);
如果句柄在调用之前已经发出信号,我会这样做WaitForSingleObject
,该函数将返回什么?
我认为它应该立即返回 a WAIT_OBJECT_0
...但在我的情况下,它等待事件被设置,并且由于这没有发生(事件已经设置),它超时。
请给个建议。
WaitForSingleObject(handle, timeout);
如果句柄在调用之前已经发出信号,我会这样做WaitForSingleObject
,该函数将返回什么?
我认为它应该立即返回 a WAIT_OBJECT_0
...但在我的情况下,它等待事件被设置,并且由于这没有发生(事件已经设置),它超时。
请给个建议。
取决于事件。您对手动重置事件的期望是正确的,并且自动重置事件不会保持信号状态:事件对象 (Windows)。
自动重置事件 一个事件对象,其状态保持为信号状态,直到释放单个等待线程,此时系统自动将状态设置为非信号状态。
如果没有线程在等待,则事件对象的状态保持信号状态。如果有多个线程在等待,则选择一个等待线程。不要假设先进先出 (FIFO) 顺序。内核模式 APC 等外部事件可以更改等待顺序。