Sorry for
delay,
As you must know, you can terminate a thread using ExitThread() or TerminateThread() from other thread.
A terminated thread
will continue to exist until the last handle to it is closed using
CloseHandle(), so you must careful when are using WaitForSingleObject() and
WaitForMultipleObjects() using thread handles.
Remember that terminate a thread through ExitThread() and TerminateThread() set the object to
the signaled state, releasing all other threads waiting on the object (including threads).