The topic you requested is included in another documentation set. For convenience, it's displayed below. Choose Switch to see the topic in its original location.

_endthread, _endthreadex


For the latest documentation on Visual Studio 2017 RC, see Visual Studio 2017 RC Documentation.

Terminates a thread; _endthread terminates a thread that's created by _beginthread and _endthreadex terminates a thread that's created by_beginthreadex.

void _endthread( void );  
void _endthreadex(   
   unsigned retval   


Thread exit code.

You can call _endthread or _endthreadex explicitly to terminate a thread; however, _endthread or _endthreadex is called automatically when the thread returns from the routine passed as a parameter to _beginthread or _beginthreadex. Terminating a thread with a call to endthread or _endthreadex helps ensure proper recovery of resources allocated for the thread.

System_CAPS_ICON_note.jpg Note

For an executable file linked with Libcmt.lib, do not call the Win32 ExitThread API; this prevents the run-time system from reclaiming allocated resources. _endthread and _endthreadex reclaim allocated thread resources and then call ExitThread.

_endthread automatically closes the thread handle. (This behavior differs from the Win32 ExitThread API.) Therefore, when you use _beginthread and _endthread, do not explicitly close the thread handle by calling the Win32 CloseHandle API.

Like the Win32 ExitThread API, _endthreadex does not close the thread handle. Therefore, when you use _beginthreadex and _endthreadex, you must close the thread handle by calling the Win32 CloseHandle API.

System_CAPS_ICON_note.jpg Note

_endthread and _endthreadex cause C++ destructors pending in the thread not to be called.

FunctionRequired header

For more compatibility information, see Compatibility.

Multithreaded versions of the C run-time libraries only.

See the example for _beginthread.

Not applicable. To call the standard C function, use PInvoke. For more information, see Platform Invoke Examples.

Process and Environment Control
_beginthread, _beginthreadex