application has different synchronization requirements. Some programs
may need to wait for threads to complete, while some threads may need
to wait for a file operation to complete or mutexes to become
available. To cater to these various requirements, Windows bases all
its synchronization primitives around Windows
HANDLES. When you wish to wait for something of
significance, you usually pass a handle. For example, you can wait
for a thread or process to complete by specifying its handle; you can
wait for a file operation to complete by waiting on the handle in the
OVERLAPPED object you specified. You can wait for
the mutex, semaphore, event, or other objects by passing the handle
you obtained when opening or creating the object. Thus, regardless of
the type of object or event you are waiting for, you always use
handles and can use the same Win32 functions.
There are three functions exposed by
that wait for Win32 objects:
MsgWaitFor-MultipleObjects(). Each of these
functions allow you to wait for one or more handles to become
signaled, but exactly what signaled means
depends on the object. For example, a signaled synchronization object
typically means you have acquired the object, a signaled thread or
process handles mean the thread has terminated, and so forth.
Here are the three functions.
As the name implies, this function allows you to wait for a single object to become ...