ExitThread
The ExitThread
function ends a thread.
VOID ExitThread(
|
DWORD dwExitCode |
// exit code for
this thread |
|
); |
|
Parameters
dwExitCode
Specifies the
exit code for the calling thread. Use the GetExitCodeThread function to retrieve a
thread s exit code.
Return Values
This function
does not return a value.
Remarks
ExitThread is the preferred method of exiting a thread. When
this function is called (either explicitly or by returning from a thread procedure),
the current thread s stack is deallocated and the thread terminates. The
entry-point function of all attached dynamic-link libraries (DLLs) is invoked
with a value indicating that the thread is detaching from the DLL.
If the thread
is the last thread in the process when this function is called, the thread s process is also terminated.
The state of
the thread object becomes signaled, releasing any other threads that had been
waiting for the thread to terminate. The thread s termination status changes from STILL_ACTIVE to the value of the dwExitCode
parameter.
Terminating a
thread does not necessarily remove the thread object from the operating system.
A thread object is deleted when the last handle to the thread is closed.
The ExitProcess, ExitThread, CreateThread, CreateRemoteThread functions, and a process
that is starting (as the result of a CreateProcess call) are serialized
between each other within a process. Only one of these events can happen in an
address space at a time. This means the following restrictions hold:
During process startup and DLL
initialization routines, new threads can be created, but they do not begin
execution until DLL initialization is done for the process.
Only one thread in a process can
be in a DLL initialization or detach routine at a time.
ExitProcess does not
return until no threads are in their DLL initialization or detach routines.
A thread that
uses functions from the C run-time libraries should use the _beginthread
and _endthread C run-time functions for thread management rather than CreateThread
and ExitThread. Failure to do so results in small memory leaks when ExitThread
is called.
See Also