![]() |
|
Модераторы: feodorv, GremlinProg, xvr, Fixin |
![]()
|
|
| mrbrooks |
|
||||
![]() трололомен ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4259 Регистрация: 4.10.2006 Где: Дол Гулдур Репутация: нет Всего: 306 |
Резонно Согласен. Только имхо ее как раз и есть смысл вызвать после WaitForSingleObject или есть другие идеи. Резонно.
Согласен. Разговор шел о С++. не понял - почему же? можно по подробнее?
Тем что функция возвращает. Я же не утверждаю что только так можно определить завершился ли поток (WAIT_OBJECT_0) или нет (WAIT_TIMEOUT) - но как вариант имхо вполне годится. Добавлено через 2 минуты и 13 секунд И соответственно принимаем решения в зависимости от результата. |
||||
|
|||||
| GremlinProg |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2706 Регистрация: 9.8.2005 Где: Тюмень Репутация: 99 Всего: 106 |
да, передумал название, пока набирал ) вызвать можно, но логика работы потока уже будет путаной (по той же причине не котируется и оператор goto), тем более, если тут начнутся поиски ошибок, то эта дорожка будет как минимум тернистой -------------------- "Гений всегда разумнее, чем умнее. Ум — это машина, разум — водитель этой машины." |
|||
|
||||
| asd |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 89 Регистрация: 25.6.2006 Репутация: 1 Всего: 1 |
Если мешать вызовы rtl и винапи, то рано или поздно произойдёт нечто подобное тому, что описывает Рихтер в разделе "Ой, вместо _beginthreadex я по ошибке вызвал CreateThread". И не факт, что это единственный такой пример. Так вопрос состоит не в том, чтобы определить, завершился ли поток, а в том, _почему_ он висит после return 0;
Зачем вам 2 перехода в ядро вместо 1? Wait.. ф-ии стоит вызывать, если нам нужно именно _дождаться_ завершения потока(к примеру он готовит какие-то данные для нас) |
|||
|
||||
| GremlinProg |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2706 Регистрация: 9.8.2005 Где: Тюмень Репутация: 99 Всего: 106 |
если Wait бесконечный, и он не завершится, то повиснуть могут теперь уже оба потока вместо одного Wait дает возможность дождаться завершения, но завершить, конечно не дает -------------------- "Гений всегда разумнее, чем умнее. Ум — это машина, разум — водитель этой машины." |
|||
|
||||
| asd |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 89 Регистрация: 25.6.2006 Репутация: 1 Всего: 1 |
||||
|
||||
| mrbrooks |
|
||||
![]() трололомен ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4259 Регистрация: 4.10.2006 Где: Дол Гулдур Репутация: нет Всего: 306 |
я этого и не утверждал. я предлагал обработать результат функции, если поток за какое то время не завершился валить его негодяя всеми подручными средствами.
Ок. А как было определено что поток повис именно после return 0? Добавлено через 3 минуты и 36 секунд сейчас пробежал глазами - ничего ужасного супротив _beginthreadex обнаружено не было. Добавлено через 6 минут и 45 секунд сейчас пробежал глазами - ничего ужасного супротив _beginthreadex обнаружено не было. |
||||
|
|||||
| asd |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 89 Регистрация: 25.6.2006 Репутация: 1 Всего: 1 |
Это сказал топикстартер.
Да дело на в _beginthreadex. У рихтера описан вариант вызова библиотечной ф-ии в потоке созданном через CreateThread. И кто сказал что подобных вещей не может произойти, если мы начнём совмещать другие вызовы trl с вызовами других АПИ |
|||
|
||||
| mrbrooks |
|
|||
![]() трололомен ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4259 Регистрация: 4.10.2006 Где: Дол Гулдур Репутация: нет Всего: 306 |
Точно. Вопрос переадресуем ему. Волков боятся - в лес не ходить. Хотя ситуацию надо обмозговать. |
|||
|
||||
![]()
|
| Правила форума "C/C++: Системное программирование и WinAPI" | |
|
|
На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы . Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Системное программирование и WinAPI | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |