为已经发出信号的事件等待singleobject

waitforsingleobject for an already signaled event

本文关键字:事件 等待 singleobject 信号      更新时间:2023-10-16

我做WaitForSingleObject(handle, timeout);如果在调用WaitForSingleObject之前句柄已经发出信号,函数将返回什么?

我认为它应该立即返回一个WAIT_OBJECT_0…但是在我的例子中,它等待事件设置,由于没有发生(事件已经设置),它超时。

请建议。

视事件而定。对于手动重置事件,您所期望的是正确的,而自动重置事件不会保持信号状态:事件对象(Windows)。

自动复位事件事件对象的状态保持为信号状态,直到事件发生单个等待线程被释放,此时系统自动设置状态为非信号

如果没有线程在等待,事件对象的状态保持为有信号状态。如果有多个线程正在等待,则选择一个等待线程。做不采用先进先出(FIFO)顺序。外部事件,例如内核模式apc可以改变等待顺序。