Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Корректное завершение потока 
V
    Опции темы
vadimp56
Дата 19.2.2011, 19:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 40
Регистрация: 8.4.2010
Где: Москва

Репутация: нет
Всего: нет



Здравствуйте.
У меня такая проблема:  создаю в своей программе поток, он выполняет какие-то действия и завершается.
Так вот, есть ли возможность отследить выход из этого потока, чтобы завершить программу.
PM MAIL   Вверх
azesmcar
Дата 19.2.2011, 19:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

Репутация: 81
Всего: 211



vadimp56

Поток завершается тогда, когда завершается его функция выполнения. Но я не совсем понял зачем это может понадобиться?
PM   Вверх
hawk3500
Дата 19.2.2011, 19:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 246
Регистрация: 6.2.2009

Репутация: нет
Всего: 2



Если Вы имеете ввиду ситуацию когда у вас многопоточное приложение и вы хотите при завершении выполнения определённого потока завершить процесс то есть несколько вариантов:
1)
while(!!GetThreadId(Thread))Sleep(100);
Exit(1);
2)
При выходе из потока изменить глобальный флаг,а лучше Object а в основном потоке ждать WaitForSingleObject........
3)Ну или не совсем корректно но можно:
в конце дополнительного потока выполните ExitProcess;
--------------------
воин dzen'a
PM MAIL   Вверх
Modul
Дата 19.2.2011, 20:13 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 238
Регистрация: 17.2.2006

Репутация: нет
Всего: нет



Цитата(azesmcar @  19.2.2011,  19:28 Найти цитируемый пост)
Поток завершается тогда, когда завершается его функция выполнения. 


Истина.

Цитата(azesmcar @  19.2.2011,  19:28 Найти цитируемый пост)
Но я не совсем понял зачем это может понадобиться?


Ну, новичку все надо. 

Я реально применял  завершение потока для выхода из цикла, используя break.
--------------------
I'll be back !
PM MAIL   Вверх
azesmcar
Дата 19.2.2011, 20:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

Репутация: 81
Всего: 211



Цитата(Modul @  19.2.2011,  20:13 Найти цитируемый пост)
Я реально применял  завершение потока для выхода из цикла, используя break. 

нет, имелось ввиду зачем нужно завершать программу при завершении потока. Может тогда и поток не нужен, пусть main и выполняет задачу а при завершении автоматом закроется программа.
PM   Вверх
vadimp56
Дата 19.2.2011, 21:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 40
Регистрация: 8.4.2010
Где: Москва

Репутация: нет
Всего: нет



Тут вот в чём дело.
У меня в программе создаётся поток, а уже в нём ещё два. Мне нужно отследить когда закроется один из них, а потом закрыть второй и вызвавший его поток.
PM MAIL   Вверх
миг
Дата 19.2.2011, 21:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 158
Регистрация: 15.9.2008

Репутация: нет
Всего: 1



вызвать функцию BOOL GetExitCodeThread(HANDLE, PDWORD), которая проверяет завершен ли поток..
--------------------
Oaks may fall when reeds stand the storm.
PM MAIL   Вверх
vadimp56
Дата 19.2.2011, 22:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 40
Регистрация: 8.4.2010
Где: Москва

Репутация: нет
Всего: нет



А можно усыпить вызывающий процесс, чтобы он заработал по завершении одного из дочерних?
PM MAIL   Вверх
alexvs11
Дата 19.2.2011, 22:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


hell is here
**


Профиль
Группа: Участник
Сообщений: 518
Регистрация: 21.8.2010

Репутация: 6
Всего: 10



vadimp56, сделать WaitForSingleObject( hThread ..
PM MAIL   Вверх
vadimp56
Дата 19.2.2011, 22:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 40
Регистрация: 8.4.2010
Где: Москва

Репутация: нет
Всего: нет



Спасибо. Буду пробовать.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0467 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.