我正在使用WaitForSingleObject()
函数在我的程序中实现等待。
WaitForSingleObject(eventToBeSigaled, timeOut);
我们都知道这个函数会在指定的时间内等待事件发出信号。
但是我想知道当事件在进入这个调用之前已经单打时会发生什么,那时是等待意志fail(WAIT_FAILED)
吗?请以适当的理由回答这个问题。我想更深入地了解这一点。
我正在使用WaitForSingleObject()
函数在我的程序中实现等待。
WaitForSingleObject(eventToBeSigaled, timeOut);
我们都知道这个函数会在指定的时间内等待事件发出信号。
但是我想知道当事件在进入这个调用之前已经单打时会发生什么,那时是等待意志fail(WAIT_FAILED)
吗?请以适当的理由回答这个问题。我想更深入地了解这一点。
回答您的第一个问题:如果事件已经发出信号,您Wait()
将立即返回返回WAIT_OBJECT_0
。
第二个问题:WAIT_FAILED
返回的情况之一是事件句柄在Wait()
被调用时是否关闭。在这种情况下,操作系统调度程序将无法处理Wait()
调用并因此返回WAIT_FAILED
.
请注意,归根结底,这些Wait()
函数是用户线程将 CPU 传回操作系统直到满足特定条件的一种手段。根据您的需要,您可以使用 OS 原语之一作为条件(信号量、互斥量、事件等)。操作系统调度程序反过来检查此条件以确定是否应为您的工作线程分配 CPU 时间片,从而确保所有线程(以及所有进程)获得系统资源的公平份额。
你应该先检查它的文档,链接
Remarks
The WaitForSingleObject function checks the current state of the specified object. If the object's state is nonsignaled, the calling thread enters the wait state until the object is signaled or the time-out interval elapses.