powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Как вырубить поток, в котором бесконечный цикл?
6 сообщений из 6, страница 1 из 1
Как вырубить поток, в котором бесконечный цикл?
    #33178780
Фотография Serega128
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Т.е. написал процедуру, в которой бесконечный цикл (ну надо так).
Создал TThread, и впихнул его туда. Всё работает хорошо, загрузка проца минимальна, но, при закрытии основного окна, программа не умирает! В обработчике OnClose написано так:
b->Terminate();
b->Resume();
delete b;
Close();
Action = caFree;
// b- это указатель на TThread
Как закрыть программу?
...
Рейтинг: 0 / 0
Как вырубить поток, в котором бесконечный цикл?
    #33178835
SeraTJ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я, конечно, дико извиняюсь, но что такое TThread?

Если это обыкновенный класс потока, то все должно работать. И вообще, если убивается процесс, то все потоки автоматом убьются. А вообще убивать поток методом Terminate крайне не рекомендуется этикетом и соображениями разумности.
...
Рейтинг: 0 / 0
Как вырубить поток, в котором бесконечный цикл?
    #33178855
Maksim UM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А в цикле проверяется Terminated?
должно быть что-то вроде:
while (!Terminated) {
...
}
...
Рейтинг: 0 / 0
Как вырубить поток, в котором бесконечный цикл?
    #33178895
Александр Спелицин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Скорее всего программа пишется на Borland C++ Builder :)

Метод Terminate класса TThread всего лишь устанавливает значение поля Terminated в TRUE. При этом разработчики Win32 и VCL предполагали, что функция потока будет САМА и ПЕРИОДИЧЕСКИ проверять значение этого свойства.

Так что либо в вашем бесконечном цикле проверяйте значение Terminated, либо жестко завершайте поток через WINAPI TerminateThread(). Про недостатки последнего способа прочитайте в MSDN.
...
Рейтинг: 0 / 0
Как вырубить поток, в котором бесконечный цикл?
    #33178898
Фотография Serega128
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не надо было делать

b->Resume;
delete b;

всё заработало и так, при исп. Terminated
...
Рейтинг: 0 / 0
Как вырубить поток, в котором бесконечный цикл?
    #33178952
SeraTJ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Александр СпелицинМетод Terminate класса TThread всего лишь устанавливает значение поля Terminated в TRUE.


Приношу свои извинения. :)
Тогда, действительно, все очевидно - потоку нужно проверять в цикле, не захотел ли кто его убить.
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / Как вырубить поток, в котором бесконечный цикл?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]