WaitForSingleObject
The WaitForSingleObject
function returns when one of the following occurs:
The specified object is in the
signaled state.
The time-out interval elapses.
DWORD WaitForSingleObject(
HANDLE hHandle, |
// handle of object
to wait for |
DWORD dwMilliseconds |
// time-out
interval in milliseconds |
); |
|
Parameters
hHandle
Identifies
the object. For a list of the object types whose handles can be specified, see
the following Remarks section.
Windows
NT: The handle must have SYNCHRONIZE
access. For more information, see Access Masks and Access Rights
dwMilliseconds
Specifies the
time-out interval, in milliseconds. The function returns if the interval
elapses, even if the object s state is nonsignaled. If dwMilliseconds is
zero, the function tests the object s state and returns immediately. If dwMilliseconds
is INFINITE, the function s time-out interval never elapses.
Return Values
If the
function succeeds, the return value indicates the event that caused the
function to return.
If the
function fails, the return value is WAIT_FAILED. To get extended error
information, call GetLastError
The return
value on success is one of the following values:
Value |
Meaning |
WAIT_ABANDONED |
The
specified object is a mutex object that was not released by the thread that
owned the mutex object before the owning thread terminated. Ownership of the
mutex object is granted to the calling thread, and the mutex is set to
nonsignaled. |
WAIT_OBJECT_0 |
The state
of the specified object is signaled. |
WAIT_TIMEOUT |
The
time-out interval elapsed, and the object s state is nonsignaled. |
Remarks
The WaitForSingleObject
function checks the current state of the specified object. If the object s
state is nonsignaled, the calling thread enters an efficient wait state. The
thread consumes very little processor time while waiting for the object state
to become signaled or the time-out interval to elapse.
Before
returning, a wait function modifies the state of some types of synchronization
objects. Modification occurs only for the object or objects whose signaled
state caused the function to return. For example, the count of a semaphore
object is decreased by one.
The WaitForSingleObject
function can wait for the following objects:
Object |
Description |
Change
notification |
The FindFirstChangeNotification |
Console
input |
The handle
is returned by the CreateFile |
Event |
The CreateEvent |
Mutex |
The CreateMutex |
Process |
The CreateProcess |
Semaphore |
The CreateSemaphore |
Thread |
The CreateProcess,
CreateThread |
Timer |
The CreateWaitableTimer |
In some
circumstances, you can specify a handle of a file, named pipe, or
communications device as a synchronization object in lpHandles. However,
their use for this purpose is discouraged.
You have to
be careful when using the wait functions and DDE. If a thread creates any
windows, it must process messages. DDE sends messages to all windows in the
system. If you have a thread that uses a wait function with no time-out
interval, the system will deadlock. Therefore, if you have a thread that
creates windows, use MsgWaitForMultipleObjects or MsgWaitForMultipleObjectsEx,
rather than WaitForSingleObject.
See Also