Click here to Skip to main content
15,885,767 members
Articles / Desktop Programming / Win32
Tip/Trick

Is it mandatory to call _endthreadex() in your thread function?

Rate me:
Please Sign up or sign in to vote.
5.00/5 (3 votes)
3 Oct 2011CPOL 22.6K   2   1
Do you really need an explicit call to _endthreadex() in your thread function created using _beginthreadex()
I have often seen the thread functions written like the one below:

C++
DWORD WINAPI MyThreadProc( LPVOID lpParam )
{
    DoSomeGreatOperationsHere();
    _endthreadex( 0 );  // This is the thing in QUESTION!!!
    return 0; // This part will never be executed, as _endthreadex() calls // ExitThread() with the value passed to _endthreadex()
}


Do we really require to call _endthreadex() in the threads created using _beginthreadex()? A big NO is the answer!! and for that matter you don't need a call to ExitThread() too.

_beginthreadex() function actually allocates and initializes the per thread data required by the CRT and calls CreateThread() passing a stub function in CRT as the entrypoint for the thread. This stub function will call your actual thread function(in this case, MyThreadProc) and when your thread function returns, the stub function ensures that it calls _endthreadex() passing the value returned from the thread function.

Again in _endthreadex(), the per thread data allocated will be released and ExitThread() will be called passing the value received in _endthreadex().

Reference: threadex.c & thread.c in CRT Source.

Please be free to ask your queries, if any. :)

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)


Written By
Software Developer (Senior)
India India
Started my career as software engineer on May-21-2005. Worked on VC++ for first three months after that moved to .Net (MC++ and C#) for 19 months. Now back again to VC++.

Now doing some research in Win CE and Platform Builder.

Comments and Discussions

 
GeneralReason for my vote of 5 this explains thread very simply Pin
kingoftheworld14-Oct-11 1:23
kingoftheworld14-Oct-11 1:23 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.