![]() |
|
Модераторы: feodorv, GremlinProg, xvr, Fixin |
![]()
|
|
| Altern |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 17 Регистрация: 30.3.2006 Репутация: нет Всего: нет |
Здравствуйте. У меня вопрос. Как узнать, запущен ли поток? То есть он бывает в трех состояниях: запущен, остановлен и приостановлен(Suspended). Когда поток остановлен, то его Handle равен NULL. А как различить остальные два состояния - приостановлен он или выполняется?
Заранее спасибо |
|||
|
||||
| Romikgy |
|
|||
![]() Любитель-программер ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7326 Регистрация: 11.5.2005 Где: Porto Franco Odes sa Репутация: 7 Всего: 146 |
ResumeThread
If the function succeeds, the return value is the thread's previous suspend count. If the suspend count is 0, the thread is not currently suspended. SuspendThread If the function succeeds, the return value is the thread's previous suspend count -------------------- Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. |
|||
|
||||
| Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 33 Всего: 183 |
Ничего подобного. Кто, интересно, хандл обнулит? Хандл остается валидным, пока его не закроет CloseHandle. И нужно вызвать функцию GetExitCodeThread, чтобы узнать, завершился ли поток. Или использовать WaitForSingleObject (c нулевым таймаутом) Что касается состояния suspend-resume, то прямой функции я не знаю, но можно попробовать вызвать suspend, (а потом снова resume, чтобы не менять состояния), и по возвращенному suspend значению понять, стоит процесс или работает. -------------------- ... |
|||
|
||||
| NiJazz |
|
|||
![]() Jazz coder ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2286 Регистрация: 10.8.2003 Где: Москва Репутация: 6 Всего: 23 |
Earnest, и что же должна вернуть GetExitCodeThread??
|
|||
|
||||
| Romikgy |
|
|||
![]() Любитель-программер ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7326 Регистрация: 11.5.2005 Где: Porto Franco Odes sa Репутация: 7 Всего: 146 |
один из вариантов
-------------------- Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. |
|||
|
||||
| NiJazz |
|
|||
![]() Jazz coder ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2286 Регистрация: 10.8.2003 Где: Москва Репутация: 6 Всего: 23 |
Romikgy, может, подкинешь примерчик, с чем ты сравниваешь exit code, чтобы определить состояние потока?
Добавлено @ 12:20 Romikgy,
Сорри, бываю невнимателен. |
|||
|
||||
| Romikgy |
|
|||
![]() Любитель-программер ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7326 Регистрация: 11.5.2005 Где: Porto Franco Odes sa Репутация: 7 Всего: 146 |
-------------------- Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. |
|||
|
||||
| lemax |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 90 Регистрация: 14.10.2007 Репутация: нет Всего: 1 |
WaitForSingleObject в случае успеха захватывает HANDLE? Нужно ли его высвободить, или ,все таки, WaitForSingleObject не может изменить состояние на захваченный? |
|||
|
||||
| EnergoHokum |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 600 Регистрация: 10.11.2006 Где: Россия, Ставропол ь Репутация: 3 Всего: 6 |
Функции ожидания (по моим экспериментам) захватывают только объекты синхронизации: защёлки, семафоры, события. Для handle потока WaitForSingleObject(threadHandle,0) всего-лишь проверит, завершился-ли он уже, или нет. Handle всего того, что не является объектами синхронизации освобождать после проверки нет необходимости.
|
|||
|
||||
| lemax |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 90 Регистрация: 14.10.2007 Репутация: нет Всего: 1 |
Спасибо. А то в документации ни слова про это |
|||
|
||||
![]()
|
| Правила форума "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. |