等待单个对象功能的使用

时间:2012-05-20 13:53:52

标签: c++ waitforsingleobject

我正在使用WaitForSingleObject()函数在我的程序中实现等待。

WaitForSingleObject(eventToBeSigaled, timeOut);

我们所有人都知道此函数会等待事件在指定的时间内发出信号。

但是我想知道当事件在进入此呼叫之前已经单独发生时会发生什么,那时候等待fail(WAIT_FAILED)?请以正当理由回答这个问题。我想更深入地了解这一点。

2 个答案:

答案 0 :(得分:2)

回答你的第一个问题:如果事件已经发出信号,你的Wait()会立即返回WAIT_OBJECT_0

第二个问题:返回的一个情况是WAIT_FAILED,如果在调用Wait()时关闭了事件句柄。在这种情况下,OS调度程序将无法处理Wait()调用,因此返回WAIT_FAILED

请注意,在一天结束时,Wait()函数是用户线程将CPU传递回操作系统的方法,直到满足某个条件。根据您的需要,您可以使用其中一个OS原语作为条件(信号量,互斥,事件等)。 OS调度程序依次检查此条件以确定是否应为您的工作线程提供CPU时间片,从而确保所有线程(以及所有进程)获得公平的系统资源共享。

答案 1 :(得分:0)

你应该首先查看它的文档,link

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.