FairMonitor::Wait()
{
create a Win32 event
[place the event handle in the wait set]
release the lock
block on the event
acquire the lock
destroy the event
}
FairMonitor::Notify()
{
[retrieve and remove the oldest event handle from the wait set]
set the event to the signaled state
}
FairMonitor::NotifyAll()
{
[retrieve and remove all event handles from the wait set]
set all events to the signaled state
}