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

WaitForSingleObject(eventToBeSigaled, timeOut);

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

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

有帮助吗?

解决方案

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

第二个问题:其中一种情况 WAIT_FAILED 返回的是事件句柄是否在以下情况下关闭 Wait() 叫做。在这种情况下,操作系统调度程序将无法处理 Wait() 调用并因此返回 WAIT_FAILED.

请注意,在一天结束时, Wait() 函数是用户线程将 CPU 传递回操作系统直到满足特定条件的一种方法。根据您的需要,您可以使用操作系统原语之一作为条件(信号量、互斥体、事件等)。操作系统调度程序依次检查此条件,以确定是否应为工作线程提供 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.

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top