Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Функция потока и возвращаемое значение
Форум программистов > Системное программирование > C, С++ и С Builder > Общие вопросы по С и С++
shisik
При создании потока прототип его функии выглядит следующим образом: DWORD __stdcall ThreadProc(PVOID pvParam), т.е. функция возвращает целое беззнаковое число. Отсюда у меня вопрос: куда она его возвращает? Ведь при вызове CreateThread остановки вызывающей функции не проиходит и она может завершиться раньше, чем завершится созданный поток (а значит и чем он вернёт код завершения). Каким образом можно проверить, с каким кодом завершился поток?
European
Цитата(shisik @ 16:05:2008 - 18:21) *
Отсюда у меня вопрос: куда она его возвращает?

Что-то вопрос не очень понятен. Возвращаемое функцией потока значение = код завершения потока.
Цитата(shisik @ 16:05:2008 - 18:21) *
Каким образом можно проверить, с каким кодом завершился поток?

GetExitCodeProcess
shisik
Цитата(European @ 16:05:2008, 23:50 ) *
Что-то вопрос не очень понятен.

Я имел ввиду, что возвращаемое значение функции можно получить так:
result = SomeFunc();

Но с функцией потока так не получится.
Цитата(European @ 16:05:2008, 23:50 ) *
Возвращаемое функцией потока значение = код завершения потока.

Я понимаю, что это код завершения потока. Поэтому и спросил, как его получить.
Цитата(European @ 16:05:2008, 23:50 ) *
GetExitCodeProcess

Получается в первом параметре надо передать HANDLE потока? Чтож, попробую. Спасибо за помощь smile.gif
Yason
Цитата
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.
European
Цитата(shisik @ 17:05:2008 - 00:21) *
Но с функцией потока так не получится.

Не получится, т.к. возвращаемое функцией потока значение не предназначено для прямого получения. Недавно цитированный тобой Рихтер все это объясняет. Да и 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.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2008 IPS, Inc.