Russian Qt Forum

Qt => Многопоточное программирование, процессы => Тема начата: unduty от Июнь 13, 2021, 11:00



Название: Сохранение работы основного потока при падении дополнительных.
Отправлено: unduty от Июнь 13, 2021, 11:00
Доброе время суток, Уважаемы гуру, прошу подсказать принцип организации стабильного консольного приложения на сервере.
Имеется три потока
 - "стабильный" основной поток запускающий остальные
 - поток со "стабильным" не меняемым кодом собирает информацию и должен работать при падении третьего
 - поток с нестабильным изменяемым и сложным кодом в котором возможно падение.

Какие есть механизмы для контроля и перезапуска третьего потока при падении, при условии постоянной работы второго потока ?


Название: Re: Сохранение работы основного потока при падении дополнительных.
Отправлено: Igors от Июнь 13, 2021, 11:09
Выбора тут нет, чтобы перезапускать - надо сначала дать упавшей нитке выйти, др надежных способов ее прибить нет. Ну значит в ней юзать try/catch, по сути это все


Название: Re: Сохранение работы основного потока при падении дополнительных.
Отправлено: Old от Июнь 13, 2021, 11:38
Доброе время суток, Уважаемы гуру, прошу подсказать принцип организации стабильного консольного приложения на сервере.
Имеется три потока
 - "стабильный" основной поток запускающий остальные
 - поток со "стабильным" не меняемым кодом собирает информацию и должен работать при падении третьего
 - поток с нестабильным изменяемым и сложным кодом в котором возможно падение.

Какие есть механизмы для контроля и перезапуска третьего потока при падении, при условии постоянной работы второго потока ?
Можно перейти на микросервисную архитектуру - на каждую "работу" свой процесс.
Основной процесс запускает и контроллирует работу остальных процессов. Он может не только контроллировать, что запущенный им процесс еще активен (не упал), но и что он не завис.
Если дочерний процесс упал или повис, то основной может безопастно его убить и перезапустить.
Общаться все процессы могут через очередь сообщений (MQ), их много разных с разными возможностями.
Эта архитектура легко маштабируется в будущем, например если понадобится несколько процессов-добытчиков и несколько процессов-обработчиков.


Название: Re: Сохранение работы основного потока при падении дополнительных.
Отправлено: Racheengel от Июнь 21, 2021, 16:18
WatchDog же :)


Название: Re: Сохранение работы основного потока при падении дополнительных.
Отправлено: Old от Июнь 21, 2021, 16:21
WatchDog же :)
И что? :)
Поняли что поток завис, что с ним дальше делать?


Название: Re: Сохранение работы основного потока при падении дополнительных.
Отправлено: Racheengel от Июнь 22, 2021, 12:12
WatchDog же :)
И что? :)
Поняли что поток завис, что с ним дальше делать?

Так по условиям задачи упал, а не завис.
Ошибку выдать и перезапустить :)


Название: Re: Сохранение работы основного потока при падении дополнительных.
Отправлено: Fregloin от Июль 28, 2021, 11:30
Detached tgreads