Функция потока и возвращаемое значение

shisik

Well-known member
26.08.2007
154
0
#1
При создании потока прототип его функии выглядит следующим образом: DWORD __stdcall ThreadProc(PVOID pvParam), т.е. функция возвращает целое беззнаковое число. Отсюда у меня вопрос: куда она его возвращает? Ведь при вызове CreateThread остановки вызывающей функции не проиходит и она может завершиться раньше, чем завершится созданный поток (а значит и чем он вернёт код завершения). Каким образом можно проверить, с каким кодом завершился поток?
 
04.09.2006
2 566
3
#2
Отсюда у меня вопрос: куда она его возвращает?
Что-то вопрос не очень понятен. Возвращаемое функцией потока значение = код завершения потока.
Каким образом можно проверить, с каким кодом завершился поток?
GetExitCodeProcess
 

shisik

Well-known member
26.08.2007
154
0
#3
Что-то вопрос не очень понятен.
Я имел ввиду, что возвращаемое значение функции можно получить так:
Код:
result = SomeFunc();
Но с функцией потока так не получится.
Возвращаемое функцией потока значение = код завершения потока.
Я понимаю, что это код завершения потока. Поэтому и спросил, как его получить.
Получается в первом параметре надо передать HANDLE потока? Чтож, попробую. Спасибо за помощь :)
 
Y

Yason

#4
The thread execution begins at the function specified by the lpStartAddress parameter. If this function returns, the DWORD return value is used to terminate the thread in an implicit call to the ExitThread function. Use the GetExitCodeThread function to get the thread's return value.
 
04.09.2006
2 566
3
#5
Но с функцией потока так не получится.
Не получится, т.к. возвращаемое функцией потока значение не предназначено для прямого получения. Недавно цитированный тобой Рихтер все это объясняет. Да и MSDN в описании ThreadProc говорит:
MSDN сказал(а):
A process can determine when a thread it created has completed by using one of the wait functions. It can also obtain the return value of its ThreadProc by calling the GetExitCodeThread function.