Понимание примера функции MSDN _beginthreadex - PullRequest
2 голосов
/ 01 декабря 2010

Эта функция есть на _beginthreadex странице MSDN :

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

    while ( Counter < 1000000 )
    Counter++;

    _endthreadex( 0 );
    return 0;
}

Я знаю, что вы можете получить значение, возвращаемое _endthreadex с помощью функции GetExitCodeThread, но как вы получите значение, возвращаемое return?

Еще один вопрос: _endthreadex не завершает поток, почему после этого они поставили return 0?

Ответы [ 2 ]

0 голосов
/ 20 июля 2018

В этом фрагменте оператор return действительно только для того, чтобы компилятор был доволен. Однако на самом деле вам не нужно вызывать _endthreadex, поскольку он вызывается внутри _beginthreadex после возврата из функции потока. И он возвращает ваше возвращаемое значение в _endthreadex (или ExitThread, из него).

См. Статья Раймонда Чена

0 голосов
/ 01 декабря 2010

return 0 - это просто для того, чтобы сделать компилятор счастливым. _endthreadex не возвращается.

...