| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Общие вопросы > Корректное завершение потока |
| Автор: vadimp56 19.2.2011, 19:27 |
| Здравствуйте. У меня такая проблема: создаю в своей программе поток, он выполняет какие-то действия и завершается. Так вот, есть ли возможность отследить выход из этого потока, чтобы завершить программу. |
| Автор: azesmcar 19.2.2011, 19:28 |
| vadimp56 Поток завершается тогда, когда завершается его функция выполнения. Но я не совсем понял зачем это может понадобиться? |
| Автор: hawk3500 19.2.2011, 19:48 |
| Если Вы имеете ввиду ситуацию когда у вас многопоточное приложение и вы хотите при завершении выполнения определённого потока завершить процесс то есть несколько вариантов: 1) while(!!GetThreadId(Thread))Sleep(100); Exit(1); 2) При выходе из потока изменить глобальный флаг,а лучше Object а в основном потоке ждать WaitForSingleObject........ 3)Ну или не совсем корректно но можно: в конце дополнительного потока выполните ExitProcess; |
| Автор: azesmcar 19.2.2011, 20:17 | ||
нет, имелось ввиду зачем нужно завершать программу при завершении потока. Может тогда и поток не нужен, пусть main и выполняет задачу а при завершении автоматом закроется программа. |
| Автор: vadimp56 19.2.2011, 21:23 |
| Тут вот в чём дело. У меня в программе создаётся поток, а уже в нём ещё два. Мне нужно отследить когда закроется один из них, а потом закрыть второй и вызвавший его поток. |
| Автор: миг 19.2.2011, 21:35 |
| вызвать функцию BOOL GetExitCodeThread(HANDLE, PDWORD), которая проверяет завершен ли поток.. |
| Автор: vadimp56 19.2.2011, 22:00 |
| А можно усыпить вызывающий процесс, чтобы он заработал по завершении одного из дочерних? |
| Автор: alexvs11 19.2.2011, 22:20 |
| vadimp56, сделать WaitForSingleObject( hThread .. |
| Автор: vadimp56 19.2.2011, 22:44 |
| Спасибо. Буду пробовать. |