|
Техник
318 / 176 / 27
Регистрация: 09.10.2009
Сообщений: 3,109
|
|||||||||||
Многопоточные приложения (остановить поток)21.06.2012, 14:57. Показов 13230. Ответов 92
Метки нет (Все метки)
Доброго времени суток. У меня такая проблемка, программа включается в себя 2 дополнительных потока, которые создаются при старте проги:
на событии OnClose стоит такой код:
почему может зависать? и как корректно завершить выполнение потоков и вообще программы с несколькими потоками?
0
|
|||||||||||
| 21.06.2012, 14:57 | |
|
Ответы с готовыми решениями:
92
Многопоточные приложения Многопоточные приложения
|
|
|
|
| 25.06.2012, 09:16 | |
|
В этом случае варианта два: попроще - TThread + Synchronize(), позаковыристей - вывод информации в глобальную AnsiString через крит-секцию и копирование информации из нее, скажем, таймером в основном потоке.
... ну, лучше-таки TThread.
0
|
|
|
Техник
318 / 176 / 27
Регистрация: 09.10.2009
Сообщений: 3,109
|
|
| 25.06.2012, 09:22 [ТС] | |
|
BRcr, а как это на примере может выглядеть?)) TThread + Synchronize()
0
|
|
|
|
|
| 25.06.2012, 09:42 | |
|
0
|
|
|
Техник
318 / 176 / 27
Регистрация: 09.10.2009
Сообщений: 3,109
|
|
| 25.06.2012, 09:53 [ТС] | |
|
BRcr, первый пример вроде попроще) попробую разобраться, но щас пока нужно думаю сначала отладить зависание)
от сюда вопрос, как можно проверить какой цикл виснет, с помощью трассировки, но после закрытия программы?
0
|
|
|
|
|
| 25.06.2012, 10:29 | |
|
А почему после-то? Программа и не должна завершаться до тех пор, пока порожденные ей потоки не будут разрушены. Спокойненько себе расставляем breakpoints после циклов и ключевых действий, потом смотрим, до какой дело так и не дойдет.
0
|
|
|
Техник
318 / 176 / 27
Регистрация: 09.10.2009
Сообщений: 3,109
|
|
| 25.06.2012, 12:15 [ТС] | |
|
BRcr, не, это то понятно что она не должна завершаться, но мне ведь по сути нужно начать ловить когда я пытаюсь закрыть программу, а до этого она должна как я понимаю нормально запуститься, и проработать хотя бы несколько секунд
0
|
|
|
|
||||||
| 25.06.2012, 12:22 | ||||||
|
И где проблема? Ставим breakpoint тут:
0
|
||||||
|
Техник
318 / 176 / 27
Регистрация: 09.10.2009
Сообщений: 3,109
|
||||||
| 25.06.2012, 12:37 [ТС] | ||||||
|
проблема в том что:
то в отладчик выходит программа, но когда расставляю точки в потоке то по F8 отладчик делает следующий шаг к StopThread_harvest = true; и виснет, не переходя к остальным точкам в потоке
0
|
||||||
|
Техник
318 / 176 / 27
Регистрация: 09.10.2009
Сообщений: 3,109
|
|
| 25.06.2012, 12:52 [ТС] | |
|
программа, т.е. когда нажимаю F8 программа виснет, по Ctrl+F2 закрываю программу без проблем.
0
|
|
|
|
|
| 25.06.2012, 13:39 | |
|
Есть еще очень хороший способ отладки потоков - логирование. После подозрительных действий писать в лог, мол, действие свершено. Можно к этому еще добавлять значения каких-то переменных или штамп времени.
Все, потом смотрим лог и видим, где сбои.
0
|
|
|
Техник
318 / 176 / 27
Регистрация: 09.10.2009
Сообщений: 3,109
|
||||||
| 26.06.2012, 11:14 [ТС] | ||||||
|
BRcr, я логи ни когда не писал еще)) как это делается ? на примере если можно))
Добавлено через 19 часов 54 минуты BRcr, с логами разобрался) простая оказалась задачка) но выяснить из за чего именно виснет не получается, программа зависает сразу после обращения к EnterCriticalSection(section_harvest); после чего запись в лог тоже прекращается Добавлено через 1 час 18 минут Я нашел проблему))) и она как раз связана с тем что вы говорили раньше про использование VCL в потоке всего лишь за комментировал строку :
0
|
||||||
|
Техник
318 / 176 / 27
Регистрация: 09.10.2009
Сообщений: 3,109
|
|
| 26.06.2012, 13:32 [ТС] | |
|
BRcr, это точно))) вот только теперь нужно научиться пользоваться синхронизацией)
Добавлено через 26 минут не совсем понимаю, что да как в этом примере : http://docwiki.embarcadero.com... _(C%2B%2B)
0
|
|
|
|
|
| 26.06.2012, 13:41 | |
|
А чего неясно-то?
![]() Execute() - основная функция потока, содержит его цикл. Synchronize() - принимает ссылки на функции и выполняет их в контексте основного потока процесса. Функции должны быть без параметров - при необходимости передавать им что-то можно глобальными переменными или данными класса.
0
|
|
|
Техник
318 / 176 / 27
Регистрация: 09.10.2009
Сообщений: 3,109
|
||||||
| 26.06.2012, 13:44 [ТС] | ||||||
|
BRcr, а что это за функции ?
![]()
0
|
||||||
|
|
|
| 26.06.2012, 14:15 | |
|
Первая - конструктор класса потока, вторая - его метод. Классы потоков обычно наследуют от TThread и добавляют в них по вкусу данные и методы. Примерно так же, как обычно с формами работают. В данном случае имя класса потока - TEnumeratorThread.
0
|
|
|
Техник
318 / 176 / 27
Регистрация: 09.10.2009
Сообщений: 3,109
|
|
| 26.06.2012, 14:16 [ТС] | |
|
Ну т.е. мне это это по сути не нужно?
0
|
|
|
Техник
318 / 176 / 27
Регистрация: 09.10.2009
Сообщений: 3,109
|
|
| 26.06.2012, 14:56 [ТС] | |
|
как все сложно)) завтра буду пробовать )
0
|
|
| 26.06.2012, 14:56 | |
|
Многопоточные консольные приложения
Как писать многопоточные приложения, использующие разделяемые ресурсы
Остановить поток Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
GitHub Copilot в JetBrains: модель по умолчанию, Fix и контроль MCP
and_y87 12.10.2026
10 октября 2026 года GitHub обновил Copilot для JetBrains: добавил настройки стартовой модели, исправления из диагностики и управление автозапуском MCP. Поддержка IDE 2025. 1 прекращена — требуется. . .
|
GitHub Copilot в JetBrains: модель по умолчанию, Fix и контроль MCP
and_y87 12.10.2026
10 октября 2026 года GitHub обновил Copilot для JetBrains: добавил настройки стартовой модели, исправления из диагностики и управление автозапуском MCP. Поддержка IDE 2025. 1 прекращена — требуется. . .
|
День 5 из 28: Codex подсказывает следующий запрос
and_y87 12.10.2026
9 октября 2026 года OpenAI запустила бету Composer predictions — подсказок следующего сообщения в текущем диалоге Codex. Это помощь с формулировкой запроса, а не автоматическое продолжение задачи.
. . .
|
Запустил конкурс "тем и промптов для текстовых квестов созданных почти чисто ИИ"
Adler 06.10.2026
Всем привет!
За последние три-четыре дня я создал более 16 текстовых квестовых игр используя преимущественно по одному запросу к ИИ на игру. Мне так понравилось смотреть все ветки/ сцены во всех. . .
|
|
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык.
Возвращает он вот это:
https:/ / i. **********/ vqBWLe2. png
Нужную строчку в 3й колонке просто выдумал. .
Это. . .
|
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor.
Это. . .
|
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js.
В помощники взял Яндекс-Алису.
Было создано три зала на разные интересы.
исторические и ретро
сериал Хичкок. . .
|
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
|