Understanding the MSDN _beginthreadex function example

1.1k views Asked by At

There's this function on _beginthreadex MSDN page:

unsigned __stdcall SecondThreadFunc( void* pArguments )
{
    printf( "In second thread...\n" );

    while ( Counter < 1000000 )
    Counter++;

    _endthreadex( 0 );
    return 0;
}

I know you can get the value returned by _endthreadex with the function GetExitCodeThread, but how do you get the value returned by return?

Another question: doesn't _endthreadex end the thread, why did they put a return 0 after that?

2

There are 2 answers

0
atzz On BEST ANSWER

return 0 is there just to make the compiler happy. _endthreadex does not return.

0
Yogurt On

In this snippet the return statement is indeed only to make the compiler happy. However, in fact, you don't need to call _endthreadex as it is called internally by _beginthreadex after you return from your thread function. And it passes your return value to _endthreadex (or ExitThread, from it).

See Raymond Chen's article